文章目录
-
ARM中伪指令并不是真正的汇编指令(cpu不认识),但这些伪指令在汇编编译器对源程序进行汇编处理时被替换成对应的一条或多条汇编指令。用于简化汇编编码工作
-
ARM中的汇编伪指令包括ADR、ADRL、LDR和NOP
NOP伪指令
- NOP伪指令在汇编时将会被代替成ARM中的空操作,比如可能是"MOV R0,R0"指令等。NOP可用于延时操作

ADR伪指令
- 小范围地址读取伪指令
z80
adr{cond} register, expr
- 作用:将基于PC的地址值读取到寄存器中。获得expr表达式对应代码在内存中的运行位置

ADRL伪指令
- 中等范围地址读取伪指令。相较于ADR伪指令,可以读取更大范围的地址
- 一般ADR伪指令读取范围为-10201020,而ADRL伪指令读取范围为-256K256K
- ADRL伪指令在汇编时会被编译器替换成两条汇编指令

LDR伪指令
- 大范围地址读取伪指令。它可以将一个32bit的常数或者一个地址值读取到寄存器中
- 表现形式有两种,对应的用途也是两种
- 第一种形式: 带 '=', 可以将非法的立即数放入寄存器
z80
@语法格式
LDR{cond} register, = expr | label_expr
z80
.text
.global _start
_start:
mov r0, #10
ldr r1, =0x1ff
b .
.end

- 第二种形式: 不带'=', 将标号代表的内存中的数据放入寄存器
z80
LDR{cond} register, label_expr
z80
.text
.global _start
_start:
mov r0, #10
ldr r1, =0x1ff
ldr r2, test
mov r3, #20
b .
test:
.word 0x12345678
.end
