什么是伪指令?常用的伪指令功能有哪些

来源:百度知道 编辑:UC知道 时间:2024/05/23 00:10:01

用于告诉汇编程序如何进行汇编的指令,它既不控制机器的操作也不被汇编成机器代码,只能为汇编程序所识别并指导汇编如何进行。

ADRL 伪指令
将相对于程序或相对于寄存器的地址载入寄存器中。 与 ADR 指令相似。ADRL 所加载的地址比 ADR 所加载的地址更宽,因为它可生成两个数据处理指令。

Note
汇编版本老于 ARMv6T2 的处理器的 Thumb 指令时,ADRL 是无效的。

语法

ADRL{cond} Rd,label

其中:

cond
是一个可选的条件代码(请参阅条件执行)。

Rd
是要加载的寄存器。

label
表达式,与程序或寄存器相关。 有关详细信息,请参阅相对寄存器和程序相对的表达式。

用法
ADRL 始终汇编为两个 32 位指令。 即使使用单个指令就可完成地址访问,也会生成多余的第二个地址。

如果汇编程序无法将地址构建为两个指令,则它将生成一条错误消息,汇编将失败。 有关加载更宽范围地址的信息,请参阅LDR 伪指令(另请参阅将常数加载到寄存器)。

ADRL 可生成与位置无关的代码,因为地址与程序或寄存器有关。

如果 label 与程序有关,则其表示的地址必须要与 ADRL 伪指令在同一汇编程序区域内,请参阅AREA。

如果使用 ADRL 来为 BX 或 BLX 指令生成目标,则当目标中包含 Thumb 指令时,您就要自己设置地址的 Thumb 位(位 0)。

体系结构和范围
可用范围取决于所用的指令集:

ARM
±64KB 到字节或半字对齐的地址。

±256KB 字节,字对齐地址。

32 位 Thumb
±1MB 字节,字节、半字或字对齐地址。

16 位 Thumb
ADRL 不可用。

上面给出的范围是相对于位于当前指令后的、离当前