Скачиваний:
75
Добавлен:
01.05.2014
Размер:
1.22 Mб
Скачать

Логический сдвиг вправо (Logical Shift Right)

Синтаксис в ассемблере

LSR<Rd>, <Rs>

Формат команды представлен на рис. 2.

Описание

<Rd> – регистр результата (см. таблицу 1).

<Rs> – регистр операнда указывающего количество разрядов, на которое сдвигается регистр <Rd> (см. таблицу 1).

Данная форма команды LSRсдвигает содержимое регистра <Rd> на <Rs> разрядов вправо. В освободившиеся при сдвиге разряды записывается 0. В зависимости от результата происходит обновление флагов полей условия (см. таблицу 4).

Действие

(Rd) = (Rd) >> (Rs). Далее, устанавливаются флаги.

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

Данная форма инструкции LSRиспользуется для получения значения регистра делённого на степень двух, где степень является переменной.

Примеры

LSRR0,R1

Сдвигает содержимое регистра R0 наR1 разрядов вправо и сохраняет результат вR0, что эквивалентно делению содержимогоR0 на 2R1.

MCRARM

Команда регистрового обмена с сопроцессором

Синтаксис в ассемблере

MCR {<cond>} <coproc>, <opcode_1>, <Rd>, <CRn>, <CRm>{,<opcode_2>}

Формат команды представлен на рис. 1.

Описание

<cond> – поле условия (см. таблицу 1).

<coproc> – определяет имя сопроцессора (см. таблицу 1).

<opcode_1> – код операции 1 (см. таблицу 1).

<Rd> – регистр назначения (см. таблицу 1).

<CRn> – регистр результата.

<CRm> – дополнительный регистр, который используется как регистр назначения.

<opcode_2> – код операции 2 (см. таблицу 1).

Команда MCR(MovetoCoprocessorfromARMRegister) направляет значение регистра <Rd> сопроцессору с номеромcp_num. Если не отображено ни одного сопроцессора, которые могут обработать команду, генерируется ошибка Undefined Instruction (команда не определена).

Действие

Если условие (<cond>) выполнено, то значение регистра <Rd> отправляется сопроцессору с номером [cp_num].

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

MCRиспользуется для возбуждения команды сопроцессора, которая оперирует значениямиARMрегистров.

Примечания

Поля сопроцессора: архитектурой ARMопределены правила заполнения только для битов [31:24], бита [20], битов [15:8] и бита [4]. Остальные поля заполняются согласно рекомендациям, написанным для совместимости с разработанными системамиARM. Команды сопроцессора, которые не реализованы являются неопределенными.

Примеры

MCR p14,1,R7,c7,c12,6

ARM регистр направляет сопроцессору 14 команды opcode_1 = 1 и opcode_2 = 6. Исходные данные находятся в регистре R7, регистры результата 7 и 12.

MCR2 – ARM

Команда регистрового обмена с сопроцессором

Синтаксис в ассемблере

MCR2 {<cond>} <coproc>, <opcode_1>, <Rd>, <CRn>, <CRm>{,<opcode_2>}

Формат команды представлен на рис. 1.

Описание

<cond> – поле условия (см. таблицу 1).

<coproc> – определяет имя сопроцессора (см. таблицу 1).

<opcode_1> – код операции 1 (см. таблицу 1).

<Rd> – регистр назначения (см. таблицу 1).

<CRn> – регистр результата.

<CRm> – дополнительный регистр, который используется как регистр назначения.

<opcode_2> – код операции 2 (см. таблицу 1).

Команда MCR2 направляет значение регистра <Rd> сопроцессору с номеромcp_num. Если не отображено ни одного сопроцессора, которые могут обработать команду, генерируется ошибка Undefined Instruction (команда не определена). В отличие от командыMCR,MCR2 устанавливает поле условия (<cond>, биты [31:28]) в 0b1111, т.е. эта команда обрабатывается безусловно. Это предоставляет дополнительное пространство для поля с кодом операции <opcode> для разработчиков.

Действие

Если условие (<cond>) выполнено, то значение регистра <Rd> отправляется сопроцессору с номером [cp_num].

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

MCRиспользуется для возбуждения команды сопроцессора, которая оперирует значениямиARMрегистров.

Примечания

Поля сопроцессора: архитектурой ARMопределены правила заполнения только для битов [31:24], бита [20], битов [15:8] и бита [4]. Остальные поля заполняются согласно рекомендациям, написанным для совместимости с разработанными системамиARM. Команды сопроцессора, которые не реализованы являются неопределенными.

Примеры

MCR2 p6,0,R4,c5,c6

ARM регистр направляет сопроцессору #6 команду с кодом opcode = 0. Исходные данные находятся в регистре R4, результат разместить в регистре c6.

MCRRARM