SII (Стена обсуждения | вклад) (Новая страница: «800px|thumb|center|Формат инструкции BX === Синтаксис === '''BX'''{''cond''} ''Rm'' ''cond'' определ…») |
SII (Стена обсуждения | вклад) Нет описания правки |
||
Строка 1: | Строка 1: | ||
[[Файл:BX (ARM).png|800px|thumb|center|Формат инструкции BX]] |
[[Файл:BX (ARM).png|800px|thumb|center|Формат инструкции BX]] |
||
+ | Команда <tt>BX</tt> выполняет переход по адресу, заданному в регистре, и при необходимости переключает процессор в режим Thumb. |
||
=== Синтаксис === |
=== Синтаксис === |
||
Строка 8: | Строка 9: | ||
''cond'' определяет, при каком условии команда будет выполнена. |
''cond'' определяет, при каком условии команда будет выполнена. |
||
+ | ''Rm'' задаёт [[регистры общего назначения (ARM)|регистр общего назначения]], содержащий в разрядах 31–1 адрес перехода. Младший бит равен 0 для перехода на код ARM и 1 для перехода на код Thumb. |
||
− | ''Rm'' |
||
=== Версии архитектуры === |
=== Версии архитектуры === |
||
Строка 26: | Строка 27: | ||
=== Примечания === |
=== Примечания === |
||
+ | Если разряды Rm[1:0] равны 10, поведение процессора непредсказуемо, поскольку команды набора ARM всегда должны быть выровнены по границе слова. |
||
+ | |||
+ | В качестве Rm может быть указан счётчик команд, однако это практически бесполезно: в результате управление получит команда ARM, адрес которой на 8 больше адреса команды <tt>BX</tt>, поскольку при чтении значения PC будет получено именно это значение. |
||
[[Категория:Архитектура ARM]] |
[[Категория:Архитектура ARM]] |
Текущая версия от 09:18, 24 сентября 2010
Команда BX выполняет переход по адресу, заданному в регистре, и при необходимости переключает процессор в режим Thumb.
Синтаксис
BX{cond} Rm
cond определяет, при каком условии команда будет выполнена.
Rm задаёт регистр общего назначения, содержащий в разрядах 31–1 адрес перехода. Младший бит равен 0 для перехода на код ARM и 1 для перехода на код Thumb.
Версии архитектуры
ARMv5 и выше, а также ARMv4T.
Исключения
Отсутствуют.
Операция
if условие выполнено then CPSR.T = Rm[0] PC = Rm AND 0xFFFFFFFE
Примечания
Если разряды Rm[1:0] равны 10, поведение процессора непредсказуемо, поскольку команды набора ARM всегда должны быть выровнены по границе слова.
В качестве Rm может быть указан счётчик команд, однако это практически бесполезно: в результате управление получит команда ARM, адрес которой на 8 больше адреса команды BX, поскольку при чтении значения PC будет получено именно это значение.