微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > arm汇编adrl以及ldr与adr的区别

arm汇编adrl以及ldr与adr的区别

时间:11-20 来源:互联网 点击:
看《嵌入式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就可以实现了。


Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top