Если процессор поддерживает технологию 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).