OSDev Wiki
Регистрация
 
Строка 50: Строка 50:
 
=== Примечания ===
 
=== Примечания ===
   
Если бит JE в главном регистре конфигурации равен нулю, а биты Rm[1:0] равны 10, результат будет непредсказуемым, поскольку команды набора ARM должны быть выровнены по границе слова.
+
1. Если бит JE в главном регистре конфигурации равен нулю, а биты Rm[1:0] равны 10, результат будет непредсказуемым, поскольку команды набора ARM должны быть выровнены по границе слова.
   
Если в качестве Rm указан счётчик команд, результат будет непредсказуемым.
+
2. Если в качестве Rm указан счётчик команд, результат будет непредсказуемым.
   
Адрес кода операции Jazelle определяется разновидностью архитектуры; обычно он находится в специальном регистре, JPC (Jazelle Program Counter).
+
3. Адрес кода операции Jazelle определяется разновидностью архитектуры; обычно он находится в специальном регистре, JPC (Jazelle Program Counter).
   
 
[[Категория:Архитектура ARM]]
 
[[Категория:Архитектура ARM]]

Текущая версия от 09:42, 24 сентября 2010

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).