看《嵌入式linux使用开发》第六章实例中看到个句:
adrl r2,men_cfg_val
开始对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就可以完成了。