В HTML      В PDF
микроэлектроника, микросхема, транзистор, диод, микроконтроллер, память, msp430, Atmel, Maxim, LCD, hd44780, t6963, sed1335, avr, mega128
Предприятия Компоненты Документация Применения Статьи Новости

 
Пересюхтюмя


13-я Международная выставка электронных компонентов и комплектующих для электронной промышленности





Выставка Передовые Технологии Автоматизации





Главная > Обзоры по типам > Микроконтроллеры > ARM > Система команд
Пересюхтюмя


13-я Международная выставка электронных компонентов и комплектующих для электронной промышленности





Выставка Передовые Технологии Автоматизации


Команды регистрового обмена с сопроцессором (MRC, MCR)

Эти команды будут выполнены, если условие истинно. Все различные условия их выполнения перечислены в таблице 6. Машинный код обеих команд приведен на рис.36.

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

Команды этого класса используются для обмена информацией непосредственно между ядром ARM7TDMI и сопроцессором. Например, команда регистровой передачи (MRC) от сопроцессора к ядру ARM7TDMI может быть использована для передачи от сопроцессора 32-битного числа с плавающей запятой (предварительно преобразованное им же в целое 32-битное) непосредственное в регистр общего назначения ARM7TDMI. 32-битное число типа FLOAT, размещенное в регистре ARM7TDMI, может быть передано непосредственно в один из регистров сопроцессора с помощью команды регистровой передачи в сопроцессор (MCR).

Эти команды также очень удобны для передачи/приема управляющей информации между обоими ядрами. Например, можно непосредственно передать флаги сопроцессора в регистр CPSR ядра ARM7DTMI, тем самым управлять ветвлением программы в зависимости от результатов работы сопроцессора.

Поля сопроцессора

Поле CP# используется (как и в остальных командах для работы с сопроцессором) для указания номера сопроцессора, с которым будет производиться обмен.

Поля CP Opc, CRn, CP и CRm используются только самим сопроцессором. Допустима интерпретация этих полей, отличная от стандартной, в зависимости от типа и возможностей сопроцессора. Стандартное назначение этих полей таково: поля CP Opc и CP определяют тип команды, которую должен выполнить сопроцессор, поле CRn - регистр сопроцессора, который может быть либо источником, либо получателем передаваемой информации, и поле CRm - второй регистр сопроцессора, который может быть использован в зависимости от типа команды сопроцессора.

Передача в регистр R15

Когда содержимое регистра сопроцессора передается в регистр ARM7TDMI, в качестве которого используется R15, то биты с 31-го по 28-й передаваемого слова копируются в соответствующие флаги: N, Z, C и V ядра ARM7TDMI. При этом остальные биты этого слова никуда не записываются, регистр при этом PC не подвергается изменениям, а остальные биты регистра CPSR также остаются без изменений.

Передача из регистра R15

В этом случае реально будет передано в сопроцессор содержимое регистра PC плюс 12 ядра ARM7TDMI.

Число машинных тактов

Команда MRC выполняется за 1S + (b+1)I + 1C, где b - число машинных тактов, необходимых для выполнения пустых тактов сопроцессора, а S, I и C зависят от типа машинных тактов.

Команда MRC выполняется за 1S + bI + 1C, где b - число машинных тактов, необходимых для выполнения пустых тактов сопроцессора, а S, I и C зависят от типа машинных тактов.

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

<MCR|MRC>{cond} p#,<expression1>,Rd,cn,cm{,<expression2>}

где:

{cond}: двухсимвольная мнемоника условия выполнения команды (см. табл. 6);
MRC: передать из сопроцессора в регистр ARM7TDMI (L=1);
MCR: передать из регистра ARM7TDMI в сопроцессор (L=0);
p#: номер сопроцессора, которому адресована команда;
{выражение1}: результат вычисления этого выражения размещается в поле "CP opc";
Rd: выражение, которое определяет номера регистра ядра ARM7TDMI;
cn и cm: выражения, которые определяют номера регистров сопроцессора для полей CRn, и CRm соответственно;
{выражение2}: вычисления этого выражения размещается в поле "CP".

Примеры

MRC     p2,5,R3,c5,c6     ; Указать сопроцессору #2 на необходимость 
                          ; выполнения им команды с кодом 5 для регистров с5 и c6
                          ; и передать результат (32-битное слово) в регистр R3.
MCR     p6,0,R4,c5,c6     ; Указать сопроцессору #6 на необходимость
                          ; выполнения им команды с кодом 0 c регистром R4,
                          ; после этого разместить результат в регистре c6.
MRCEQ   p3,9,R3,c5,c6,2   ; По условию указать сопроцессору #3 на необходимость
                          ; выполнения им команды с кодом 9 c регистрами c5 и с6,
                          ; после этого разместить результат в регистре R3.


<---- Вернуться к Системе команд --->