Переход и переключение режима ядра (BX)
Эта команда будет выполнена, если условие истинно. Все различные условия выполнения перечислены в табл. 6. Машинный код команды приведен на рис.11.
Команда выполняет переход, копируя содержимое регистра общего назначения Rn в программный счетчик PC. Во время перехода происходит очистка конвейера команд и передача управления по адресу, определенному регистром Rn. Бит 0 регистра Rn определяет режим работы ядра после выполнения перехода: ARM или THUMB.
Рис 11. Команда перехода и переключения режима ядра
Число машинных тактов выполнения
Команда BX выполняется за 2S+1N машинных тактов, где S и N зависят от типа тактов.
Синтаксис в ассемблере
BX - переход и переключение режима ядра.
BX{cond} Rn
{cond}: двухсимвольная мнемоника условия (см. табл. 6).
Rn: выражение, вычисляющее номер регистра
Использование R15 в качестве операнда
Если R15 используется в качестве операнда, поведение команды неопределенно.
Пример
ADR R0, Into_THUMB + 1 ; Сформировать адрес перехода
; и установить в "1" бит 0, т.е. указать
; на необходимость переключения в режим THUMB
BX R0 ; Перейти и сразу переключить ядро в режим THUMB
CODE16 ; Последующие команды должны
Into_THUMB ; декодироваться в режиме THUMB
.
.
.
ADR R5, Back_to_ARM ; Сформировать адрес перехода
; и очистить бит 0, т.е. указать
; на необходимость возврата в режим ARM
BX R5 ; Перейти и сразу переключить ядро в режим ARM
.
.
.
ALIGN ; Выравнивание по слову
CODE32 ; Последующие команды должны
Back_to_ARM ; декодироваться в режиме ARM
.
.
.
|
<---- Вернуться к Системе команд --->
|