1. 寄存器移动指令

1.1. 文档约定

记法:Rd, Rn 表示 ARM 寄存器 R0-R15。immN 表示位宽为 N 位的立即数。这些指令会影响条件标志。

1.2. 寄存器移动

在使用立即数的地方,这些值会被零扩展到 32 位。因此 mov(R0, 0xff) 会将 R0 设置为 255。

  • mov(Rd, imm8) Rd = imm8

  • mov(Rd, Rn) Rd = Rn

  • movw(Rd, imm16) Rd = imm16

  • movt(Rd, imm16) Rd = (Rd & 0xffff) | (imm16 << 16)

movt 将一个立即数写入目标寄存器的高半字。它不影响低半字的内容。

  • movwt(Rd, imm32) Rd = imm32

movwt 是一条伪指令:MicroPython 汇编器会发出一个 movw 后跟一个 movt,以将一个 32 位值移入 Rd。