3. 将寄存器存储到内存

3.1. 文档约定

记法:Rt, Rn 除非另有说明,表示 ARM 寄存器 R0-R7。immN 表示位宽为 N 位的立即数,因此 imm5 被约束在 0-31 范围内。[Rn + imm5] 是将 Rn 与偏移量 imm5 相加所得内存地址处的内容。偏移量以字节为单位。这些指令不影响条件标志。

3.2. 寄存器存储

  • str(Rt, [Rn, imm7]) [Rn + imm7] = Rt 存储一个 32 位字

  • strb(Rt, [Rn, imm5]) [Rn + imm5] = Rt 存储一个字节(b0-b7)

  • strh(Rt, [Rn, imm6]) [Rn + imm6] = Rt 存储一个 16 位半字(b0-b15)

所指定的立即偏移量以字节为单位。因此对于 str,7 位的值使得可以以最大 31 个字的偏移量访问 32 位字对齐的值。对于 strh,6 位的值使得可以以最大 31 个半字的偏移量访问 16 位半字对齐的值。