C中嵌入汇编PLD指令:asm("PLD [%0,#128]": :"r" (psrc) );

copy自官方文档:

4.2.7. PLD、PLDW 和 PLI

预载数据和预载指令。 处理器可向内存系统发送信号,告诉内存系统在不久的将来可能要从某个地址加载数据或指令。

语法

PLtype{cond} [Rn {, #offset}]
PLtype{cond} [Rn, +/-Rm {, shift}]
PLtype{cond} label

其中:

type

可以是下列项之一:

D

数据地址

DW

要写入的数据地址

I

指令地址

如果语法指定了 label,则 type 不能为 DW

cond

是一个可选的条件代码(请参阅条件执行)。

Note

cond 只能用在 Thumb-2 代码中,且前面要有 IT 指令。 这是 ARM 中的无条件执行指令,请一定不要使用 cond

Rn

是内存地址所基于的寄存器。

offset

是直接偏移量。 如果省略偏移量,则该地址为 Rn 中的值。

Rm

是一个寄存器,包含要用作偏移量的值。 Rm 不能为 r15。 对于 Thumb 指令, Rm 还不能为 r13。

shift

是一个可选的移位。

label

是一个程序相对的表达式。 有关详细信息,请参阅相对寄存器和程序相对的表达式

偏移量范围

预载前,会先将偏移量应用到 Rn 中的值。 所得结果将用作预载的内存地址。 偏移量的允许范围为:

  • –4095 到 +4095(ARM 指令)

  • –255 到 +4095(适用于 Rn 不是 r15 时的 Thumb-2 指令)。

  • –4095 到 +4095(适用于 Rn 为 r15 时的 Thumb-2 指令)。

汇编器会计算相对 PC 的偏移量。 如果 label 超出范围,则汇编器会生成错误。

寄存器或寄存器移位偏移量

在 ARM 中,Rm 中的值既可与 Rn 中的值相加,也可从其中减去。 在 Thumb-2 中,Rm 中的值只能与 Rn 中的值相加。 所得结果将用作预载的内存地址。

移位的允许范围为:

  • LSL #0 到 #3(对于 Thumb-2 指令)

  • 对于 ARM 指令,可为以下范围之一:

    • LSL #0 到 #31

    • LSR #1 到 #32

    • ASR #1 到 #32

    • ROR #1 到 #31

    • RRX

预载的地址对齐

对于预载指令,系统不执行对齐检查。

体系结构

ARM PLD 可用于 ARMv5TE 及更高版本。

32 位 Thumb PLD 可用于 ARMv6T2 及更高版本。

PLDW 只能用于实现了多重处理扩展的 ARMv7 及更高版本。

PLI 只能用于 ARMv7 及更高版本。

不存在 16 位 Thumb PLDPLDWPLI 指令。

这些是提示指令,其实现是可选的。 如果未实现,则这些指令作为 NOP 执行。

参考:http://blog.csdn.net/waverider2012/article/details/8538923

arm cache line,PLD指令的更多相关文章

  1. <转>科普CPU Cache line

    转载于http://coolshell.cn/articles/10249.html CPU cache一直是理解计算机体系架构的重要知识点,也是并发编程设计中的技术难点,而且相关参考资料如同过江之鲫 ...

  2. cpu性能探究 :cache line 原理

     參考: 一个解说Direct Mapped Cache很深入浅出的文章: http://www.cs.umd.edu/class/sum2003/cmsc311/Notes/Memory/dir ...

  3. cache line 伪共享

    https://blog.csdn.net/qq_27680317/article/details/78486220认识CPU Cache CPU Cache概述 随着CPU的频率不断提升,而内存的访 ...

  4. ARM体系结构和汇编指令

    第一节 可编程器件的编程原理 1. 可编程器件的特点 1 . CPU在固定频率的时钟控制下节奏运行 2 . CPU可以通过总线读取外部存储设备中的二进制指令集,然后解码执行 3 . 这些可以被CPU解 ...

  5. 伪共享(False Sharing)和缓存行(Cache Line)

    转载:https://www.jianshu.com/p/a9b1d32403ea https://www.toutiao.com/a6644375612146319886/ 前言 在上篇介绍Long ...

  6. 程序与CPU,内核,寄存器,缓存,RAM,ROM、总线、Cache line缓存行的作用和他们之间的联系?

    目录 缓存 什么是缓存 L1.L2.L3 为什么要设置那么多缓存.缓存在cup内还是cup外 MESI协议----主流的处理缓存和主存数据不一样问题 Cache line是什么已经 对编程中数组的影响 ...

  7. Cache Line 伪共享发现与优化

    https://yq.aliyun.com/articles/465504 Cache Line 伪共享发现与优化 作者:吴一昊,杨勇 1. 关于本文 本文基于 Joe Mario 的一篇博客 改编而 ...

  8. arm B和BL指令浅析

    arm B和BL指令浅析 B或BL指令引起处理器转移到“子程序名”处开始执行.两者的不同之处在于:(1)BL指令在转移到子程序执行之前,将其下一条指令的地址拷贝到R14(LR,链接寄存器).      ...

  9. [zhuan]arm中的汇编指令

    http://blog.csdn.net/qqliyunpeng/article/details/45116615 一. 带点的(一般都是ARM GNU伪汇编指令)   1. ".text& ...

随机推荐

  1. c#序列化json字符串及处理

    上面提到的第四篇文章最后有个解析数组的例子,出现了 .First.First.First.First.Children(); 我表示很晕,网上找的的例子大多数是关于JObject的,但是我很少看到JA ...

  2. OC的总结 ***希望对大家有帮助*** ---高小杰

    1.  NSLog           是Foundation提供的一个输出函数,它的功能非常强大,不仅可以输出字符串,还可以输出各种对象,到后面程序还会见到大量的使用NSLog()函数. 2.  N ...

  3. 数据库中老师学生家长表添加自动同意好友自动(AgreeAddingFriend ),默认为True

    数据库中老师学生家长表添加自动同意好友自动(AgreeAddingFriend ),默认为True alter table Sys_User add AgreeAddingFriend bit alt ...

  4. Sublime一键预览

    //chrome{ "keys": [ "f12" ], "command": "side_bar_files_open_with ...

  5. WebApi身份认证解决方案:Basic基础认证

    前言:最近,讨论到数据库安全的问题,于是就引出了WebApi服务没有加任何验证的问题.也就是说,任何人只要知道了接口的url,都能够模拟http请求去访问我们的服务接口,从而去增删改查数据库,这后果想 ...

  6. ios学习-控制按钮图片的走动和变换

    一.项目要求:制作一个界面,通过点击按钮来控制头像(按钮)向上,向下,向左,向右移动,可以左旋转,右旋转,以及放大和缩小. 二.开发步骤: 1.通过拖动按钮到storyboard搭建UI界面(后面会写 ...

  7. angularjs的三目运算

    前言:前几天写代码的时候遇到一个问题,有一个按钮,有"已关注"和"+关注"两种状态,需要对这两种状态的按钮的背景颜色进行区分,单后点击"已关注&quo ...

  8. SeleniumIDE从0到1 (Selenium IDE 录制)

    seleniumIDE安装成功后下面我们用百度网址来简单录制下: 简介一:百度输入框录制操作 1.打开SeleniumIDE 2.SeleniumIDE地址栏中输入百度网址:[https://www. ...

  9. Manthan, Codefest 16 -A Ebony and Ivory

    time limit per test 2 seconds memory limit per test 256 megabytes input standard input output standa ...

  10. 移动端重构系列-移动端html页面优化

    对于访问量大的网站来说,前端的优化是必须的,即使是优化1KB的大小对其影响也很大,下面来看看来自ISUX的米随随讲讲移动手机平台的HTML5前端优化,或许对你有帮助和启发. 概述 1. PC优化手段在 ...