ARM指令 LDR 和 ADR的一些区别
来源:互联网 发布:大数据金融行业运用 编辑:程序博客网 时间:2024/06/05 10:52
本文转自:http://blog.csdn.net/zhou1232006/article/details/6145039
LDR 是ARM中的指令,也是伪指令
当用 LDR r, =imd // r 为寄存器, imd为立即数
LDR 是一条伪指令。编译器会根据 立即数的大小,决定用 ldr 指令或者是mov或mvn指令。
当imd能用mov或者mvn操作时,就将它翻译成一条mov或mvn指令。当imd大于mov或mvn能够操作的数时,编译器会将imd存在一个内存单元中,然后再用一条ldr指令加载这个内存单元的的值到寄存器中。
LDR r, label 和 LDR r, =label的区别:
LDR r, =label 会把label表示的值加载到寄存器中,而LDR r, label会把label当做地址,把label指向的地址中的值加载到寄存器中。
譬如 label的值是 0x8000, LDR r, =label会将 0x8000加载到寄存器中,而LDR r, label则会将内存0x8000处的值加载到寄存器中。
ADR 和 ADRL 伪指令:
ADR 和 ADRL 伪指令用于将一个地址加载到寄存器中。
ADR为小范围的地址读取伪指令。ADR指令将基于PC相对偏移的地址值读取到寄存器中。在汇编编译源程序时,ADR伪指令被编译器替换在一条合适的指令,通常,编译器用一条ADD指令或SUB指令来实现该ADR伪指令的功能,若不能使用一条指令实现,则产生错误。其能加载的地址范围,当为字节对齐时,是-1020~1020,当为非字对齐时在-255~255之间。
ADRL是中等范围的地址读取指令。会被编译器翻译成两条指令。如果不能用两条指令表示,则产生错误。
ADRL能加载的地址范围当为非字节对齐时是-64K~64K之间;当为字节对齐时是-256K~256K之间。
- ARM指令 LDR 和 ADR的一些区别
- ARM指令 LDR 和 ADR的一些区别
- ARM指令 LDR 和 ADR的一些区别
- arm汇编指令之LDR 和 ADR的一些区别
- ARM指令ldr和adr的区别
- [ARM]ldr 和 adr 伪指令的区别
- [ARM]ldr 和 adr 伪指令的区别
- [ARM]ldr和 adr/adrl 伪指令的区别
- [ARM]ldr和 adr/adrl 伪指令的区别
- [ARM]ldr和 adr/adrl 伪指令的区别
- [ARM]ldr和 adr/adrl 伪指令的区别
- 伪指令ADR和LDR的区别
- 伪指令ADR和LDR的区别
- ARM汇编指令:adr和ldr的前因后果
- ARM指令ADR和LDR浅析
- ARM中的ldr指令与adr、ldr伪指令之间的区别
- ARM汇编中LDR和ADR的区别
- ARM汇编中的ldr和adr的区别
- 移动互联网时代: 妈,我回不去了
- 【android初学日志】Test run failed: Test run incomplete. Expected 1 tests, received 0<二>
- 队列(数组形式)实现_c++
- 图像处理的傅里叶变换
- NYOJ 993 How many integers can you find
- ARM指令 LDR 和 ADR的一些区别
- POJ1005
- 链式栈的表示和实现
- 用MSP430G2LaunchPad仿真器来仿真MSP430F5529
- android自定义控件----折线图报表
- 管理DBA的工作内容和责任
- ZOJ 旋转卡壳 3762 Pan's Labyrinth
- Java Object I/O学习
- hdu2852(线段树求第k大数)