2. 从内存中加载寄存器¶
2.1. 文件规范¶
符号:除特殊注明外, Rt, Rn
表示ARM寄存器R0-R7。 immN
表示具有N为宽度的即时值,因此 imm5
的范围限制为0-31。 [Rn + immN]
是通过
添加Rn和误差 immN
获得的内存地址的内容。误差单位为字节。这些指令会影响条件标志。
2.2. 寄存器加载¶
- ldr(Rt, [Rn, imm7])
Rt = [Rn + imm7]
加载一个32位字 - ldrb(Rt, [Rn, imm5])
Rt = [Rn + imm5]
加载一个字节 - ldrh(Rt, [Rn, imm6])
Rt = [Rn + imm6]
加载一个16位半字
一个字节或一个半字加载的情况下,其从补零变为32位。
指定即时误差单位为字节。因此,在 ldr
的情况下,7位值使得可用31字的最大偏移量来访问32位字对齐值。
在 ldrh
的情况下,6位值使得可用31半字的最大偏移值访问16位半字对齐值。