Предыдущая Следующая

Описание

Ассемблерная мнемоника

Обновление флагов

Действие

Сохранение байта с регистровым смешением

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.


Предыдущая Следующая






Warning: include(./news.php) [function.include]: failed to open stream: No such file or directory in /var/www/picprof/data/www/picprof.com/book/book4_30.html on line 266

Warning: include(./news.php) [function.include]: failed to open stream: No such file or directory in /var/www/picprof/data/www/picprof.com/book/book4_30.html on line 266

Warning: include() [function.include]: Failed opening './news.php' for inclusion (include_path='.:/usr/share/pear:/usr/share/php') in /var/www/picprof/data/www/picprof.com/book/book4_30.html on line 266