2. 从内存中加载寄存器¶
2.1. 文档约定¶
符号:除非另有说明,否则表示 ARM 寄存器 R0-R7。表示具有 N 位宽度的立即数,因此被限制在 0-31 的范围内。是Rn和offset相加得到的内存地址的内容。偏移量以字节为单位。这些指令影响条件标志。Rt, Rn
immN
imm5
[Rn + immN]
immN
2.2. 寄存器加载¶
ldr(Rt, [Rn, imm7])加载一个 32 位字
Rt = [Rn + imm7]
ldrb(Rt, [Rn, imm5])加载一个字节
Rt = [Rn + imm5]
ldrh(Rt, [Rn, imm6])加载一个 16 位半字
Rt = [Rn + imm6]
加载字节或半字时,零扩展到 32 位。
指定的立即偏移量以字节为单位。因此,ldr
在 7 位值的情况下,可以访问 32 位字对齐的值,最大偏移量为 31 个字。在ldrh
6 位值的情况下,允许访问 16 位半字对齐值,最大偏移量为 31 个半字。