| ADD | ADD R0, R1, Operand2 ADD R0, R1, 12bit const. |
Сложение R0 = R1 + R2 |
N, Z, C, V | S | |
| ADC | ADC R0, R1, R2 ADC R0, R1, 8bit const |
Сложение с учётом переноса R0 = R1 + R2 + C |
N, Z, C, V | S | |
| ADDW | ADD R0, R1, 12bit const. | Сложение с 12bit константой | N, Z, C, V | ||
| SUB | SUB R0, R1, R2 SUB R0, R1, 12bit const. |
Вычитание R0 = R1 - R2 |
N, Z, C, V | S | |
| SBC | SBC R0, R1, R2 SBC R0, R1, 8bit const. |
Вычитание с учётом переноса R0 = R1 - R2 - C |
N, Z, C, V | S | |
| SUBW | SUB R0, R1, 12bit const. | Вычитание с 12bit константой | N, Z, C, V | ||
| RSB | RSB R0, R1, R2 RSB R0, R1, 8bit const. RSB R0, R1, R2, ASR#23 |
Вычитание с противоположным порядком аргументов. R0 = R2 - R1 или R0 = 8bit const - R1 |
N, Z, C, V | S |
| MUL MLA MLS |
R0 = R1 x R2
R0 = (R1 x R2) + R3 R0 = R3 - (R1 x R2) |
Умножение. 32bit результат
Умножение и сложение Умножение и вычитание |
N, Z | S | |
| UMULL UMLAL SMULL SMLAL |
RLo, RHi = R2 x R3
RLo, RHi += R2 x R3 RLo, RHi = R2 x R3 RLo, RHi += R2 x R3 |
Умножение. 64bit результат
Умножение и сложение Умножение со знаком. 64bit результат Умножение со знаком и сложение |
|||
| UDIV SDIV |
R0 = R1 / R2
R0 = R1 / R2 |
Деление без знака
Деление со знаком |
|||
| ADR | ADR R0, label +/- 12bit ADR.W R0, label +/- 32bit |
Загрузка адреса метки в регистр. | |||
| LDR STR |
LDR R0, [R1, #8bit const.]! - прединкремент
LDR R0, [R1], #8bit const. - постинкремент LDRB R0, [R1] - без инкремента STRB R0, [R1], #1 |
Загрузка/сохранение регистра в режиме адресации со смещением. B=байт, SB=байт со знаком (только загрузка) H=полуслово, SH=полуслово со знаком (только загрузка) |
|||
| LDR STR |
LDR R0, [R1, R2, {LSL#0..3}]
STR R0, [R1, R2, {LSL#0..3}] |
Смещение задаётся третьим регистром.
B, SB, H, SH работают аналогично |
|||
| LDR LDRD |
LDR R0, label
LDRD R0, R1, label |
Смещение задаётся адресом метки.
B, SB, H, SH работают аналогично Невозможно применить к STR/STRD. |
|||
| LDRT STRT |
Непривилегированный доступ.
Аналогичны простому LDR/STR. |
||||
| LDRD STRD |
LDRD R0, R1, [R2, #10bit const.]! - прединкремент
LDRD R0, R1, [R2], #10bit const. - постинкремент LDRD R0, R1, [R2] - без инкремента STRD R0, R1, [R2] |
Загрузка/сохранение двух регистров в режиме адресации со смещением. Константа должна быть кратна 4. |
|||
| LDM STM |
LDM R0, {R1-R3}
LDM R0!, {R1-R3} - постинкремент R0 IA, DB, FD, EA - см. описание |
Загрузка/сохранение множества регистров.
IA - с увеличением адреса DB - с уменьшением адреса. |
|||
| PUSH POP |
PUSH {R0, R2-R7, R12}
POP {R0, R2-R7, R12} |
Загрузка/чтение из стека | |||
| LDREX STREX |
LDREX R1, [R2, #10bit const.]
STREX R0, R1, [R2, #10bit const.] |
Эксклюзивное чтение/запись регистра.
B=байт, H=полуслово. |
|||
| CLREX | CLREX (без параметров) | Сброс признака эксклюзивного доступа. | |||
| MOV MVN |
MOV R0, R1
MOV R0, 16bit const. MVN R0, R1 |
Загрузка/перемещение регистров
Загрузка 16-бит в мл. полуслово, сброс старшего Перемещение регистра с инверсией |
N, Z, C, V | S | |
| MOVT | MOVT R0, 16bit const. | Загр. 16bit в старшее полуслово. Младш. остаётся без изменений. | |||
| CMP CMN |
CMP R0, R1
CMN R0, R1 |
Сравнение
Сравнение с противоположным знаком |
N, Z, C, V | S | |
| TST | TST R0, Operand2 | Проверить значение битов по маске | N, Z, C | S | |
| TEQ | TEQ R0, Operand2 | Проверить равенство двух величин | N, Z | S | |
| REV REV16 REVSH RBIT |
REV R0, R1 | Изменение порядка битов или байтов в слове | |||
| CLZ | CLZ R0, R1 | Подсчет количества ведущих нулей | |||
| AND ORR EOR BIC ORN |
И ИЛИ Исключающее ИЛИ Сброс битов по маске. И-НЕ ИЛИ-НЕ |
0 в маске сбрасывает биты. Второй Operand2 для всех команд
1 в маске устанавливает биты 1 в маске инвертирует биты 1 в маске сбрасывает биты 0 в маске устанавливает биты |
N, Z, C | S |
| ASR LSL LSR ROR RRX |
Арифметический сдвиг вправо
Логический сдвиг влево Логический сдвиг вправо Циклический сдвиг вправо Сдвиг вправо на 1 позицию через перенос |
|
N, Z, C | S |
| B | B label | Переход к метке | |||
| BX | BX R0 | Переход по адресу в регистре | |||
| BL | BL label | Выполнить подпрограмму label | |||
| BLX | BLX R0 | Выполнить подпрограмму по адресу в регистре | |||
| BX LR | BX LR | Возврат из подпрограммы | |||
| CBZ CBNZ |
CBZ R0, label CBNZ R0, label |
Переход, если R0 = 0 Переход, если R0 != 0 |
|||
| TBB TBH |
TBB [R0, R1] TBH [R0, R1, LSL #1] |
Табличный переход по индексу. Короткий переход. Длиннй переход |
|||
| IT | IT{x{y{z}}} cond | Блок условно исполняемых инструкций | |||
| BFC | BFC R0, #lsb, #width | Сброс поля в ноль | |||
| BFI | BFI R0, R1, #lsb, #width | Копирует младшие биты R1 в поле R0 | |||
| UBFX | UBFX R0, R1, #lsb, #width | Копирует поле R1 в мл. биты R0 с заполнением нулями | |||
| SBFX | SBFX R0, R1, #lsb, #width | Копирует поле R1 в мл. биты R0 с расширением знака | |||
| UXTB UXTH |
UXTB R0, R1 {, ROR #8,16,24} | Преобразование байта с заполнением нулями
Преобразование полуслова |
|||
| SXTB SXTH |
SXTB R0, R1 {, ROR #8,16,24} | Преобразование байта с расширением знака
Преобразование полуслова |
|||
| SSAT USAT |
SSAT Rd, #n, Rm {, shift #s}
USAT Rd, #n, Rm {, shift #s} |
Число со знаком в число со знаком,
Число со знаком в число без знака |
Q | ||
| MRS MSR |
MRS R0, PSR MSR PSR, R0 |
Чтение/запись специальных регистров. | |||
| CPSIE CPSID |
Разрешение/запрет прерываний | ||||
| WFE | WFE | Ожидать событие | |||
| WFI | WFI | Ожидать прерывание | |||
| BKPT | Точка останова | ||||
| DMB DSB |
DMB | Барьер синхронизации доступа к ОЗУ | |||
| ISB | ISB | Сброс конвейера | |||
| SEV | SEV | Дёрнуть ножкой события для внешних камней | |||
| SVC | SVC 8bit const. | Вызов системного сервиса | |||
| NOP | NOP | ||||
| EQ | Z = 1 | Равенство | |
| NE | Z = 0 | Неравенство | |
| CS, HS | C = 1 | Больше или равно, беззнаковое сравнение | |
| CC, LO | C = 0 | Меньше, беззнаковое сравнение | |
| MI | N = 1 | Отрицательное значение, меньше нуля | |
| PL | N = 0 | Положительное значение, больше или равно нулю | |
| VS | V = 1 | Переполнение | |
| VС | V = 0 | Нет переполнения | |
| HI | C = 1 и Z=0 | Больше, беззнаковое сравнение | |
| LS | C = 0 или Z=1 | Меньше или равно, беззнаковое сравнение | |
| GE | N = V | Больше или равно, знаковое сравнение | |
| LT | N != V | Меньше, знаковое сравнение | |
| GT | Z = 0 и N = V | Больше, знаковое сравнение | |
| LE | Z = 1 и N != V | Меньше или равно, знаковое сравнение | |
| AL | 1 | Безусловное исполнение |
| MOV32 | MOV32 R0, 32bit const. (label) | Загрузить слово в регистр. | |
| LDR | LDR R0, =label | Загрузить 32bit адрес метки или #число | |
| ADRL | ADRL R0, label | Загрузить 32bit адрес метки |