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.