从内存中加载寄存器 ========================= 文件规范 -------------------- 符号:除特殊注明外, ``Rt, Rn`` 表示ARM寄存器R0-R7。 ``immN`` 表示具有N为宽度的即时值,因此 ``imm5`` 的范围限制为0-31。 ``[Rn + immN]`` 是通过 添加Rn和误差 ``immN`` 获得的内存地址的内容。误差单位为字节。这些指令会影响条件标志。 寄存器加载 ------------- * 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位半字对齐值。