首页 理论教育ARM嵌入式系统:常用伪指令LDR

ARM嵌入式系统:常用伪指令LDR

【摘要】:常用的伪指令如下。3.LDR伪指令LDR为大范围的地址读取伪指令,将一个32位的常数或者一个地址值读取到寄存器中。

ARM中的伪指令并不是真正的ARM或Thumb指令,这些伪指令在汇编编译器对源程序进行汇编处理时被替换成对应ARM或Thumb指令(或指令序列)。常用的伪指令如下。

1.ADR伪指令

ADR为小范围的地址读取伪指令,该指令将基于PC的相对偏移地址或基于寄存器的相对偏移地址读取到寄存器中。格式为:

ADR{cond}register,expr

●cond是可选的指令执行条件。

●register:是目的寄存器。

●expr是基于PC或基于寄存器的地址表达式,当地址值是字节对齐时,取值范围为-255~255B;当地址值是字对齐时,取值范围为-1020~1020B;当地址值是16字节对齐时,取值范围更大。

2.ADRL伪指令

ADRL为中等范围的地址读取伪指令,该指令将基于PC的相对偏移地址或基于寄存器的相对偏移地址读取到寄存器中。该指令比ADR的取值范围更大。格式为:

ADRL{cond}register,expr

●cond是可选的指令执行条件。

●register是目的寄存器。(www.chuimin.cn)

●expr:是基于PC或基于寄存器的地址表达式,当地址值是字节对齐时,取值范围为-64~64KB;当地址值是字对齐时,取值范围为-256~256KB;当地值是16字节对齐时,取值范围更大;在32位的Thumb-2指令中,取值范围可达-1~1MB。

3.LDR伪指令

LDR为大范围的地址读取伪指令,将一个32位的常数或者一个地址值读取到寄存器中。格式为:

LDR{cond}register,=[expr|label-expr]

●cond是可选的指令执行条件。

●register是目的寄存器。

●expr是32位常量表达式;label-expr是一个PC相关或声明为外部的表达式。

例如:

4.NOP伪指令

NOP是空操作伪指令,在汇编时被替换成ARM中的空操作。