OSDev Wiki
Advertisement
BXJ (ARM)

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

Если процессор поддерживает технологию Jazelle, команда BXJ переключает его в состояние Jazelle. Если же такой поддержки нет, команда BXJ выполняется точно так же, как команда BX.

Синтаксис[]

BXJ{cond}  Rm

cond определяет, при каком условии команда будет выполнена.

Rm задаёт регистр общего назначения, содержащий в разрядах 31–1 адрес перехода на тот случай, если технология Jazelle не поддерживается. Младший бит равен 0 для перехода на код ARM и 1 для перехода на код Thumb.

Версии архитектуры[]

ARMv6 и выше, а также ARMv5TEJ.

Исключения[]

Отсутствуют.

Операция[]

if условие выполнено then
  if бит JE в главном регистре конфигурации == 0 then
    CPSR.T = Rm[0]
    PC = Rm and 0xFFFFFFFE
  else
    JPC = значение, определяемое разновидностью архитектуры
    invalidhandler = значение, определяемое разновидностью архитектуры
    if технология Jazelle принимает код операции по адресу в JPC then
      if бит CV в регистре управления ОС Jazelle == 0 then
        PC = invalidhandler
      else
        CPSR.J = 1
        начало выполнения кода операции по адресу JPC
    else
      if (бит CV в регистре управления ОС Jazelle == 0) AND (условие, определяемое реализацией) then
        PC = invalidhandler
      else
        CPSR.T = Rm[0]
        PC = Rm and 0xFFFFFFFE

Использование[]

Эта инструкция должна использоваться только при соблюдении одного из следующих условий:

  • бит JE в главном регистре конфигурации равен 0;
  • разрешённая виртуальная машина Java удовлетворяет всем ограничениям, накладываемым технологией Jazelle для данной разновидности архитектуры.

Примечания[]

1. Если бит JE в главном регистре конфигурации равен нулю, а биты Rm[1:0] равны 10, результат будет непредсказуемым, поскольку команды набора ARM должны быть выровнены по границе слова.

2. Если в качестве Rm указан счётчик команд, результат будет непредсказуемым.

3. Адрес кода операции Jazelle определяется разновидностью архитектуры; обычно он находится в специальном регистре, JPC (Jazelle Program Counter).

Advertisement