Система команд процессоров ARM, страница 3

MLA           сложение с накоплением: содержимое двух РОН перемножается и затем прибавляется к содержимому третьего РОН (регистра суммы), результат помещается в регистр суммы.

SMULL       знаковое «длинное» умножение содержимого двух РОН с формированием 64-битового произведения и помещением его в указанную пару РОН (может быть, на место операндов).

SMLAL       знаковое «длинное» умножение с накоплением: перемножается содержимое двух указанных РОН с формированием 64-битового произведения, которое затем прибавляется к содержимому двух указанных РОН, и сумма сохраняется в этих же РОН.

UMULL       беззнаковое умножение содержимого двух РОН с формированием «длинного» (64-битового) произведения и помещением его в указанную пару РОН (может быть, на место операндов). ОН

UMLAL       беззнаковое «длинное» умножение с накоплением: перемножается содержимое двух указанных РОН с формированием 64-битового произведения, которое затем прибавляется к содержимому двух указанных РОН, и сумма сохраняется в этих же Р

Операции побитовой обработки

AND           побитовое логическое умножение содержимого РОН на С-операнд с помещением результата в РОН (может быть, на место одного из операндов).

BIC             побитовое логическое умножение содержимого РОН на инвертированный С-операнд с помещением результата в РОН (может быть, на место одного из операндов)

EOR           побитовое логическое «исключающее ИЛИ» содержимого РОН на С-операнд с помещением результата в РОН (может быть, на место одного из операндов).

ORR           побитовое логическое ИЛИ содержимого РОН на С-операнд с помещением результата в РОН (может быть, на место одного из операндов).

Прочие команды обработки

CLZ            подсчет «ведущих» нулей (Count Leading Zeroes): в РОН-приемник заносится количество идущих подряд нулей в РОН-источнике, начиная со старшего бита.

Команды проверки операндов

CMP           сравнение путем вычитания содержимого С-операнда из содержимого РОН: по результату вычитания изменяется состояние флагов в регистре состояний, после чего результат вычитания теряется.

CMN           сравнение с отрицательной величиной С-операнда: выполняется сложение содержимого РОН с содержимым С-операнда, по результату сложения изменяется состояние флагов в регистре состояний, после чего результат сложения теряется.

TST            проверка битов: выполняется побитовое логическое умножение содержимого РОН и С-операнда, по результату операции изменяется состояние флагов в регистре состояний, после чего результат логического умножения теряется.

TEQ           проверка битов: выполняется побитовое «исключающее ИЛИ» содержимого РОН и С-операнда, по результату операции изменяется состояние флагов в регистре состояний, после чего результат «исключающего ИЛИ» теряется.

Команды передачи управления

B                команда передачи управления, может быть как безусловной, так и с условным исполнением; в последнем случае имеем группу команд условных ветвлений. Адрес перехода задается путем указания 24-битового смещения, интерпретируемого процессором как величина со знаком. Процессор умножает эту константу на 4 и прибавляет (со знаком) к текущему содержимому счетчика команд. Переход возможен в диапазоне ±32 МБайт.

BL              переход на подпрограмму (Branch with Link): команда перед изменением содержимого счетчика команд запоминает адрес возврата из ПП в регистре связи (R14). Переход задается 24-битовым знаковым смещением, как в команде B. Для возврата из ПП можно выполнить команду mov PC, R14.

BX              команда передачи управления и (возможно) перехода в состояние THUMB. Адрес перехода для этой команды определяется содержимым указанного в команде РОН. При выполнении перехода младший бит указанного РОН копируется в бит T регистра состояний, и если копируемый бит равен 1, происходит переключение процессора в состояние, т.е. с этого момента процессор начнет выбирать и выполнять двухбайтовые команды набора THUMB. Одновременно при переходе содержимое указанного РОН (со сброшенным в 0 младшим битом) копируется в счетчик команд, обеспечивая переход в точку, с которой расположены двухбайтовые команды, которые выровнены по четным адресам. Если нулевой бит указанного РОН равен нулю, процессор остается в состоянии ARM, при этом и бит 1 указанного РОН должен быть равен 0, чтобы адрес перехода соответствовал началу команды набора ARM (выровненной по 4-байтовой границе). Команда BX позволяет осуществить переход в любое место адресного пространства, поскольку адрес перехода задается 32-битовым содержимым РОН.

BLX            команда вызова подпрограммы и (возможно) перехода в состояние THUMB. Команда допускает косвенно-регистровую адресацию, либо относительную адресацию в 24-битовым знаковым смещением. В варианте с косвенно-регистровой адресацией команда BLX запоминает адрес возсрата в регистре связи R14, а затем выполняет переход и (возможно) переключение в THUMB, аналогично команде BX. В варианте с относительной адресацией всегда выполняется переход в состояние THUMB и передача управления как в команде BL.

Команды поддержки сопроцессора

CDP

LDC

STC

MCR

MRC

Прочие команды

BKPT

SWI

Набор команд состояния THUMB

Команды копирования (пересылки).

Команды загрузки и сохранения

LDMIA        множественная загрузка набора РОН из памяти

LDR           загрузка слова из памяти в РОН

LDRB         загрузка байта из памяти в РОН с расширением «нулями»

LDRH         загрузка полуслова из памяти в РОН с расширением «нулями»

LDRSB       загрузка байта из памяти в РОН с расширением знака

LDRSH      загрузка полуслова из памяти в РОН с расширением знака

POP           загрузка из стека набора РОН и (возможно) счетчика команд

PUSH         сохранение в стеке набора РОН и (возможно) счетчика команд

STMIA        множественное сохранение содержимого набора РОН в памяти

STR            сохранение слова-содержимого РОН в памяти

STRB         сохранение младшего байта РОН в памяти

STRH         сохранение младшего полуслова (два байта) РОН в памяти.

Команды копирования «регистр – регистр»

MOV           копирование в РОН содержимого другого РОН или непосредственной константы

Команды обработки

Арифметические операции

ADD           команда сложения – прибавляет к содержимому РОН непосредственную константу или содержимое другого РОН и помещает результат в РОН (может быть, на место одного из слагаемых).