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. Python Thread related

    1.Thread.join([timeout]) Wait until the thread terminates. This blocks the calling thread until the ...

  2. jQuery EasyUI 使用笔记

    大家有四次抢票机会.第一次是放票时间之后的30分钟.第二次机会是开车前的15天.第三个机会是开车前的48小时.第四个机会是开车前的24小时. $("#gys_key").combo ...

  3. 夺命雷公狗----Git---6---GitHub基本使用

    github不是git. git是一个版本控制系统,是一个版本控制软件,从而完善共同开发... github是一个网站,基于git的,主要作用是代码托管的.... 托管的几层含义如下: 1:将自己平常 ...

  4. linux Centos下搭建gitolite服务器

    1.安装git sudo yum install git -y 2.添加git管理账号 sudo adduser git 3.将gitolite克隆到本地,并安装 sudo mkdir /var/gi ...

  5. org.springframework.dao.DataIntegrityViolationException:

    数据库用的hibernate,开发工具用的myeclipse,使用开发工具连接数据库生成hibernate基于xml的po类,运行时报org.springframework.dao.DataInteg ...

  6. Python基础操作-函数

    本节内容 1. 函数基本语法及特性2. 参数与局部变量3. 返回值4.递归5.高阶函数 1.函数基本语法及特性函数是什么? 函数一词来源于数学,但编程中的「函数」概念,与数学中的函数是有很大不同的,具 ...

  7. 前端基础之 url src href

    在实际使用中有时候会犯糊涂,因此来认真了解下这三者的具体用法. url 是资源定位器,是一种数据类型,和长度,颜色等属性并列.在写img的路径的时,如<img src="http:// ...

  8. 【转】Source Insight的Alt + W键不能使用的解决办法

    转载地址:http://velep.com/archives/607.html 对于Source Insight 3.5,习惯于使用Alt + W组合键并配合数字键来切换文件窗口,带来无比的便利.但是 ...

  9. 如何将util.Date转化为sql.Date

    通过查看API可以很容易知道,util.Date类时sql.Date的父类,所以根据向上转型的原理可以很简单的知道时可行的,不用做转换都可以. 但是如果想要将util.Date转化为sql.Date, ...

  10. Handler 、 Looper 、Message

    分析: Looper:prepare和loop public static final void prepare() { if (sThreadLocal.get() != null) { throw ...