|
Описание |
Ассемблерная мнемоника |
Обновление флагов |
Действие |
|
Сохранение байта с регистровым смешением |
STRB Rd, [Rn, Rm] |
[Rn + Rm][7:0]:=Rd[7:0] (игнорируются Rd[31:8]) |
|
|
Сохранение слова относительно SP |
STR Rd, [SP, #<8*4bit_Imm >] |
[R13 + 8*4bit_Imm]:= Rd |
|
|
Групповое сохранение |
STMIA Rn!, <reglist> |
Сохранение списка регистров (с изменением базового регистра) |
|
|
Помещение в стек (PUSH)/ выталкивание из стека (POP) |
|||
|
Помещение в стек |
PUSH <reglist> |
Помещение регистров в полный убывающий стек |
|
|
Помещение в стек с сохранением адреса возврата |
PUSH <reglist, LR> |
Помещение регистров и LR в стек |
|
|
Выталкивание из стека |
POP <reglist> |
Выталкивание регистров из стека |
|
|
Выталкивание из стека с возвратом |
POP <reglist, PC> |
Выталкивание регистров из стека, переход по адресу, загружаемому в PC |
|
|
Программное прерывание |
SWI <8bit_Imm> |
Генерация программного прерывания процессора (8-битное значение содержится в коде команды) |
|
В отличие от формата ARM, в формате команд THUMB отсутствует поле условия {cond}. Из условных операций выполняются только команды условных переходов Вхх, где суффикс хх определяет вид условия в соответствии с Табл. 1.5. Не используется также суффикс S, так как в системе команд THUMB жестко задано, какие флаги условий устанавливаются в регистре CPSR по результатам выполнения той или иной команды. Сокращение длины команд повлияло также на размер содержащихся в них операндов. Непосредственные данные сокращены до 8 битов, адресные смещения в большинстве команд — до 5 битов. Однако обрабатываемые данные сохраняют 32-битный формат, как и в состоянии ARM.
Состояние THUMB имеет ряд ограничений по системе команд, поэтому один и тот же алгоритм потребует для своей реализации большего количества команд, нежели в состоянии ARM. Однако как уже было сказано, формат команд THUMB обеспечивает большую компактность программного кода/ чем формат ARM. При использовании 8- или 16-битной внешней памяти производительность процессора в состоянии THUMB может оказаться выше, чем в состоянии ARM, за счет меньшего количества обращений к памяти.
1.4.5. Обработка исключительных ситуаций
При поступлении внешнего запроса прерывания или обнаружении ошибки процессор начинает работу в соответствующем данной исключительной ситуации (ИС) режиме: IRQ, FIQ, Abort или Undefinied. При этом соблюдается следующая последовательность действий:
1. Адрес следующей команды автоматически сохраняется в соответствующем регистре LR (R14_xxx). В состоянии ARM в LR копируется адрес следующей команды (PC + 4 или PC + 8 в зависимости от ИС). В состоянии THUMB в LR записывается содержимое PC со значением смещения (PC + 4 или PC + 8 в зависимости от ИС).
Для обеспечения корректного возврата в основную программу обработчику ИС нет необходимости при входе в обработку исключительной ситуации определять текущее состояние процессора. Например, в случае выполнения команды SWI последующее выполнение команды MOV PC, R14_svc всегда вызовет возврат на следующую после SWI команду вне зависимости от того, была ли команда SWI выполнена в состоянии ARM или THUMB.
| Реклама: |
| Искусственная кожа возможность купить недорогой диван для офиса. |