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位半字对齐值。