OSDev Wiki
(Новая страница: «800px|thumb|center|Формат инструкции BX === Синтаксис === '''BX'''{''cond''} ''Rm'' ''cond'' определ…»)
 
Нет описания правки
 
Строка 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 (ARM)

Формат инструкции BX

Команда 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 будет получено именно это значение.