arm汇编adrl以及ldr与adr的区别
adrl r2,men_cfg_val
本文引用地址:https://www.eepw.com.cn/article/201611/318775.htm最初对adr1相当不解,后来发现,那个不是数字1,而是字母l(认真看头部,有点区别的)
这里记录下ADRL的用法:
功能:将相对于程序或相对于寄存器的地址载入寄存器中。与ADR指令相似。ADRL生成两个数据处理指令,因此它比ADR加载的地址范围要宽。
语法
ADRL{cond} Rd,label
其中:
- cond:是一个可选的条件代码。Rd:是要加载的寄存器。label:是相对于程序或寄存器的表达式。
- 上面给出的范围是相对于位于当前指令地址后的、距离当前指令四个字节(在 Thumb 代码中)或两个字(在 ARM 代码中)远的点而言的。如果对齐为 16 字节,或与此点的相关性更高,则远程地址的范围可更大。
查看ADRL的同时,看到篇讲述ldr与adr的区别的博文,感觉写的很好,摘录下来。
http://coon.blogbus.com/logs/2738861.html
看此文最大的收获不在于说懂了这几个命令的用法,关键却在于反汇编的运用,有反汇编看出不同用法的具体差别。
注:反汇编用arm—linux_objdump就可以实现了。
评论