1. 暫存器移動指令

1.1. 文件慣例

標記法:Rd, Rn 表示 ARM 暫存器 R0-R15。immN 表示寬度為 N 位元的立即值。這些指令會影響條件旗標。

1.2. 暫存器移動

凡使用立即值之處,這些值都會被零延伸(zero-extend)至 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 會將一個立即值寫入目的暫存器的高半字組(top halfword)。它不會影響低半字組(bottom halfword)的內容。

  • movwt(Rd, imm32) Rd = imm32

movwt 是一個虛擬指令(pseudo-instruction):MicroPython 組合語言會發出一個 movw 後接一個 movt,以將一個 32 位元值移入 Rd。