首页 理论教育 LDR伪指令简介-ARM体系结构与嵌入式C语言编程技术

LDR伪指令简介-ARM体系结构与嵌入式C语言编程技术

时间:2023-10-19 理论教育 版权反馈
【摘要】:②当expr表示的指令地址值超过了MOV指令或MVN指令的地址范围时,ARM汇编器将常数放入数据缓存池,同时用一条基于PC的LDR指令读取该常数。ARM或32位的Thumb-2指令中该范围是-4~4 KB,Thumb或16位的Thumb-2指令中该范围是0~1 KB。相当于下面的ARM指令:

LDR伪指令简介-ARM体系结构与嵌入式C语言编程技术

1.语法格式

LDR伪指令装载一个32位的常数和一个地址到寄存器。

其语法格式如下:

(1){cond}:可选的指令执行条件。

(2){.W}:可选项,指定指令宽度(Thumb-2指令集支持)。

(3)register:目标寄存器。

(4)expr:32位常量表达式。

ARM汇编器根据expr的取值情况,对LDR伪指令作如下处理:

①当expr表示的地址值没有超过MOV指令或MVN指令的地址取值范围时(即有效立即数),ARM汇编器用MOV或MVN指令代替LDR指令。

②当expr表示的指令地址值超过了MOV指令或MVN指令的地址范围时,ARM汇编器将常数放入数据缓存池,同时用一条基于PC的LDR指令读取该常数。

(5)label-expr:基于PC地址的表达式或外部的表达式。当label-expr为基于PC地址的表达式时,ARM汇编器将label-expr表达式的值放入数据缓存池,同时使用一条基于PC的LDR指令加载该值。当label-expr被声明为外部的表达式时,ARM汇编器将在目标文件中插入链接重定位伪操作,由链接器在链接时生成该地址。(www.xing528.com)

2.使用说明

当要装载的常量超出了MOV指令或MVN指令的范围时,使用LDR伪指令。由LDR伪指令装载的地址是绝对地址,即PC相关地址。

当要装载的数据不能由MOV指令或MVN指令直接装载时,该值要先放入数据缓存池,此时LDR伪指令处的PC值到数据缓存池中目标数据所在地址的偏移量有一定限制。ARM或32位的Thumb-2指令中该范围是-4~4 KB,Thumb或16位的Thumb-2指令中该范围是0~1 KB。

3.示例

(1)将常数0xff0读到R1中。

相当于下面的ARM指令:

(2)将常数0xfff读到R1中。

相当于下面的ARM指令:

(3)将place标号地址读入R1中。

相当于下面的ARM指令:

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈