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.