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. 选中统计winform

    private void gridControl1_MouseUp(object sender, MouseEventArgs e) { Dictionary<string, decimal&g ...

  2. win7,安装node失败

    win7下,下载node安装包,安装之后 打开命令行输入 node -v,仍然提示命令不可用. 解决办法: 找到环境变量: 在用户变量里修改 path: 添加系统变量 NODE_PATH: 关机重启电 ...

  3. 小米抢购(简单版v0.1)-登录并验证抢购权限,以及获取真实抢购地址

    小米(简单版)-登录并验证抢购权限,以及获取真实抢购地址! 并不是复制到浏览器就行了的   还得传递所需要的参数 这里只是前部分  后面的自己发挥了 { "stime": 1389 ...

  4. C语言回顾-二维数组

    1.二维数组:是一个特殊的一维数组 完全初始化: 1)int a[2][3]={{1,2,3},{2,3,4}}; 2)连续赋值int a[2][3]={1,2,3,2,3,4}; 3)可以省略第一维 ...

  5. 记一次 IDEA mybatis.generator 自定义扩展插件

    在使用 idea mybatis.generator 生成的代码,遇到 生成的代码很多重复的地方, 虽然代码是生成的,我们也不应该允许重复的代码出现,因为这些代码后期都要来手动维护. 对于生成时间戳注 ...

  6. JavaScript语言精粹读书笔记 - JavaScript函数

    JavaScript是披着C族语言外衣的LISP,除了词法上与C族语言相似以外,其他几乎没有相似之处. JavaScript 函数: 函数包含一组语句,他们是JavaScript的基础模块单元,用于代 ...

  7. qt qml 九宫格划指锁屏视图

    九宫格划指锁屏视图Lisence: MIT, 请保留本文档说明Author: surfsky.cnblogs.com 2015-02 [先看效果] [下载] http://download.csdn. ...

  8. Terra Vista 6.2

    最近在做虚拟仿真相关工作,想把GIS中的一些想法用虚拟显示技术实现,在保证准确性的同时,提高展现效果. 前不久在朋友圈获得了一个强大的三维地形构建软件Terra Vista 6.2,据说这个软件是加拿 ...

  9. wex5 实战 图片触摸放大移动插件easyzoom的使用与集成

    一 前言 客户的需求就是上帝的召唤. 作为一个开发人员,或者软件从业者,客户的要求就是准则. 遇到一个客户,让我做一个图片放大,但是移动拖拽要定位精准.之前研究过一个hammer插件,多次尝试放大后的 ...

  10. windows+caffe(五)——实例2MNIST图片

    1. 数据集 MNIST手写体数据.bmp图片:训练集60K张28*28的,测试集10K张28*28的: 训练集: 测试集: 下载地址: 2. 读取图片名称与标签,保存到trainlist.txt与t ...