3. 将寄存器存储到内存

3.1. 文档约定

符号:除非另有说明,否则表示 ARM 寄存器 R0-R7。表示具有 N 位宽度的立即数,因此被限制在 0-31 的范围内。是Rn和offset相加得到的内存地址的内容。偏移量以字节为单位。这些指令不影响条件标志。Rt, Rn immN imm5 [Rn + imm5] imm5

3.2. 注册商店

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

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

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

指定的立即偏移量以字节为单位。因此,str 在 7 位值的情况下,可以访问 32 位字对齐的值,最大偏移量为 31 个字。在strh 6 位值的情况下,允许访问 16 位半字对齐值,最大偏移量为 31 个半字。