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

Команда перемещения данных из сопроцессора в два регистра arm одновременно

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

MRRC {<cond>} <coproc>, <opcode_1>, <Rd>, <Rd2>,<cpsource>

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

Описание

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

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

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

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

<Rd2> – второй регистр результата.

<cpsource> – источник, регистр сопроцессора.

MRRC – команда, перемещающая значение, содержащееся в регистре <cpsource>, в регистры <Rd> и <Rd2>. Поле условий должно быть определено.

Примечание

В том случае, если нет сопроцессоров, которые умеют выполнять эту команду, будет сгенерировано исключение Undefined Instruction.

Примеры

;@ * * * MRRC * * * AREA cp_move, CODE, READONLY MRRC   p0, 0, R4, R5, c1 MRRC   p1, 1, R6, R7, c2 END

MRS – ARM

Запись psr в регистр общего назначения (Move psr to General-purpose Register)

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

MRS{<cond>} <Rd>, CPSR

MRS{<cond>} <Rd>, SPSR

Формат команды записи

Описание

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

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

Команда MRS обычно используется в следующих случаях:

  • Как часть последовательности команд для обновления PSR

  • Когда выбрасывается исключение и существует вероятность того, что возникнет еще и вложенное исключение такого же типа, SPSR может быть поврежден. Для того, чтобы исключить возникновение такой ситуации, значение SPSR должно быть сохранено до того, как возникнет вложенное исключение, и восстановлено в момент завершения обработки исключения. Обычно это реализуется с использованием команды MRS.

Команда MRS (Move PSR to General-purpose Register) переносит значение CPSR или SPSR текущего режима в один из регистров общего назначения. В регистре общего назначения с этим значением можно манипулировать с помощью простых команд.

Примеры

MRS R0,SPSR ; Чтение SPSR

MSR – ARM

Запись в регистр состояния (Move to Status Register from arm Register)

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

MSR{<cond>} CPSR_<fields>, #<immediate>

MSR{<cond>} CPSR_<fields>, <Rm>

MSR{<cond>} SPSR_<fields>, #<immediate>

MSR{<cond>} SPSR_<fields>, <Rm>

Константный оператор:

Регистровый оператор:

Описание

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

<fields> – Последовательность из одного или нескольких вариантов:

c устанавливает битовую маску контрольного поля (bit 16)

x устанавливает расширенную битовую маску (bit 17)

s устанавливает битовую маску поля статуса (bit 18)

f устанавливает флаги (bit 19).

<immediate> Константа, которая будет послана в CPSR или SPSR.

<Rm> – регистр сопроцессора, содержащий второй операнд (см. таблицу 1).

Команда MSR (Move to Status Register from ARM Register) посылает содержимое регистра общего назначения или константу в CPSR или в SPSR текущего режима.

Команда используется для установки условных флагов, разрешений на прерывания, или режимов процессора.

Значение PSR обычно устанавливается следующим образом: перенос PSR в регистр общего назначения (с помощью команы MRS), модификация нужных битов в этом регистре, а затем перенос модифицированного значения обратно в PSR (с помощью команды MRS).

Примеры

MRS R0,CPSR ; Чтение CPSR

BIC R0,R0,#0x1F ; Удаление текущего режима

ORR R0,R0,#0x13 ; Замена на режим супервизора

MSR CPSR_c,R0 ; Запись результата в CPSR

MUL – ARM