转载于http://www.cnblogs.com/hnrainll/archive/2011/06/14/2080241.html

一、ldr作为加载指令

(1)格式为:LDR{条件}  目的寄存器,<存储器地址>

(2)LDR指令用于从存储器中将一个32位的字数据传送到目的寄存器中。

(3)指令示例:

LDR R0,[R1]         ;将存储器地址为R1的字数据读入寄存器R0。

LDR R0,[R1,R2]  ;将存储器地址为R1+R2的字数据读入寄存器R0。

LDR R0,[R1,#8]   ;将存储器地址为R1+8的字数据读入寄存器R0。

LDR R0,[R1,R2]!;将存储器地址为R1+R2的字数据读入寄存器R0,并将新地址R1+R2写入R1。

LDR R0,[R1,#8]!  ;将存储器地址为R1+8的字数据读入寄存器R0,并将新地址R1+8写入R1。

LDR R0,[R1],R2  ;将存储器地址为R1的字数据读入寄存器R0,并将新地址R1+R2写入R1。

LDR R0,[R1,R2,LSL#2]!  ;将存储器地址为R1+R2×4的字数据读入寄存器R0,并将新地址R1+R2×4写入R1。

LDR R0,[R1],R2,LSL#2  ;将存储器地址为R1的字数据读入寄存器R0,并将新地址R1+R2×4写入R1。

(4)ARM是RISC结构,数据从内存到CPU之间的移动需要通过ldr/str指令。

  • 比如想把数据从内存中某处读取到寄存器中,只能使用ldr 。
  • 比如ldr r0, 0x12345678 ,就是把0x12345678这个地址中的值存放到r0中?

二、ldr伪指令

(1)ARM指令集中,LDR通常都是作加载指令的,但是它也可以作伪指令。

LDR伪指令的形式是“LDR Rn,=expr”。

(2)例子:

COUNT EQU       0x40003100

LDR       R1,=COUNT

MOV      R0,#0

STR       R0,[R1]

  • COUNT是我们定义的一个变量,地址为0x40003100。
  • LDR       R1,=COUNT是将COUNT这个变量的地址,也就是0x40003100放到R1中。
  • MOV      R0,#0是将立即数0放到R0中。
  • 最后一句STR      R0,[R1]是一个典型的存储指令,将R0中的值放到以R1中的值为地址的存储单元去。实际就是将0放到地址为0x40003100的存储单元中去。
  • 这三条指令是为了完成对变量COUNT赋值。用三条指令来完成对一个变量的赋值,跟ARM的采用RISC有关。

ldr加载指令,ldr伪指令相关推荐

  1. ARM中LDR伪指令与LDR加载指令

    ARM指令集中,LDR通常都是作加载指令的,但是它也可以作伪指令. LDR伪指令的形式是"LDR Rn,=expr".下面举一个例子来说明它的用法. COUNT EQU       ...

  2. 【Android 逆向】x86 汇编 ( call 子函数调用指令 | jmp 跳转指令 | lea 加载指令 | mov 数据传送指令 )

    文章目录 一.call 子函数调用指令 二.jmp 跳转指令 三.lea 加载指令 四.mov 数据传送指令 总结 一.call 子函数调用指令 call 指令是 子函数调用指令 , 调用的指令的下一 ...

  3. 【ARMv8 编程】A64 内存访问指令——内存加载指令

    与所有先前的 ARM 处理器一样,ARMv8 架构是一种加载/存储架构.这意味着没有数据处理指令直接对内存中的数据进行操作.数据必须首先被加载到寄存器中,修改,然后存储到内存中.该程序必须指定地址.要 ...

  4. 图片懒加载及Vue自定义图片懒加载指令

    文章目录 监听滚动的方式 IntersectionObserver方式 自定义图片懒加载vue指令1 自定义图片懒加载vue指令2 lazyLoadImage.js main.js中注册指令 组件中使 ...

  5. ARM 编程 LDM 批量数据加载指令——寄存器列表与书写顺序无关

    格式: LDM{<cond>}{<type>} <Rn> {!}, <regs> {^} 功能:连续存储单元的字数据→寄存器(多个) 数据单位:字. 用 ...

  6. vue自定义指令-加载指令v-loading和占位图指令v-showimg

    了解自定义指令的钩子函数 bind(){}:每当指令绑定到元素上的时候,就会立刻执行bind这个函数.只调用一次. 和css相关的操作,可以放在这个钩子函数中.inserted(){}:元素插入到DO ...

  7. Vue自定义指令及实现图片懒加载指令

    一. 速识概念:   在我们使用 Vue 的过程中,遇到了很多方便我们操作的vue内置指令,以 v-xxx 表示.比如有 v-module,v-for,v-if,v-show 等等,每个指令都能实现一 ...

  8. prfm预加载指令使用说明

    只是实践经验,没有理论,不一定正确 prfm pldl1keep, [x0, #256] 放在 ld1 [x0] 前面 0~8 条指令 #256 表示把 x0+256 的内容放进 L1 cache l ...

  9. ARM汇编:加载和存储指令集(六大类)---LDR(ADR)、LDRB、LDRH、STR、STRB、STRH

    ARM的六大类指令集---LDR.LDRB.LDRH.STR.STRB.STRH ARM微处理器支持加载/存储指令用于在寄存器和存储器之间传送数据,加载指令用于将存储器中的数据传送到寄存器,存储指令则 ...

最新文章

  1. nexus搭建maven私服
  2. [导入]将DataGrid输出到Excel文件
  3. 八皇后问题 (递归 搜索)
  4. ca证书 linux 导入_Linux CA证书服务器搭建
  5. 卷积神经网络参数计算及卷积层输出尺寸计算
  6. 从C++到Java --理解面向对象是关键所在
  7. Java web应用引用外部jar包 运行时报ClassNotFoundException 解决方法
  8. HDU 5919 Sequence II 主席树
  9. 阿里云服务器排坑指南
  10. 不用if/while等操作实现
  11. 第7章 现代操作系统
  12. Kotlin 接口(三)
  13. python考试题目及答案-这就是你需要的python99道练习题(附答案)
  14. JavaScript-预解析(变量提升)
  15. oracle sql core目录,oracle11g数据库常见故障处理.ppt
  16. python aes加解密
  17. 【基于MATLAB 的VQ声纹识别系统】
  18. 国有资产综合管理平台需求分析
  19. React Native 中使用 Animated 实现物体下落动效
  20. 微信小程序实现打开并下载服务器上面的pdf文件到手机

热门文章

  1. Docker查看关联容器的卷宗在本机的存储位置
  2. SortedDictionaryTKey,TValue正序与反序排序及Dicttionary相关
  3. 从Loagistic 到 SVM算法
  4. linux二重启动防止
  5. 可恶,谁占用了我的80端口?
  6. 【读书笔记】MSDN 上关于加密解密的一个例子
  7. 超轻型的数据库sqlite
  8. 原生js系列之DOM工厂模式
  9. WEB在线预览PDF
  10. C++走向远洋——63(项目二2、两个成员的类模板)