Команда обработки данных сопроцессором (CDP)
Эта команда будет выполнена, если условие истинно. Все различные условия ее выполнения перечислены в таблице 6. Машинный код команды приведен на рис.34.
 Рис. 34. Команда обработки данных сопроцессором
Команда этого класса используется для того, чтобы указать сопроцессору на необходимость выполнения его некоторой внутренней команды. Ядро ARM7TDMI не ожидает окончания выполнения команды и не получает ее результатов. Сопроцессор может иметь в своем составе некую очередь команд, требующих выполнения, и при этом их выполнение может производиться одновременно с выполнением других команд ядра ARM7TDMI, т.е. фактически обеспечивается одновременная параллельная работа обоих процессоров.
Поля сопроцессора
Для ядра ARM7TDMI значащими являются только четыре старших биты машинного кода команды: [31:24]. Оставшиеся биты используются только сопроцессором. Поля, содержащие эти биты, используются в соответствии с некоторой условной договоренностью, однако сопроцессор может использовать эти поля как угодно, кроме поля "CP#". Это поле используется для указания идентификационного номера (0…15) сопроцессора, которому нужно будет выполнять эту команду. Команда будет проигнорирована сопроцессором, если его идентификационный номер не совпадает с номером, указанным в этом поле. При стандартной интерпретации команды сопроцессор должен использовать поле "CP Opc" (и, возможно, поле "CP") в качестве типа выполняемой команды, содержимое полей "CRn" и "CRm" - в качестве операндов, а результат выполнения размещать в поле "CRd".
Число машинных тактов
Команда CDP выполняется за 1S + bl, где b - число машинных тактов, необходимых для выполнения пустых тактов сопроцессора, S и I зависят от типа машинных тактов.
Синтаксис в ассемблере
CDP{cond} p#,<выражение1>,cd,cn,cm{,<выражение2>}
где:
{cond}: |
двухсимвольная мнемоника условия выполнения команды (см. табл. 6); |
p#: |
номер сопроцессора, которому адресована команда; |
{выражение1}: |
результат вычисления этого выражения размещается в поле "CP opc"; |
cd, cn, cm: |
выражения, которые определяют номера регистров сопроцессора для полей CRd, CRn, CRm соответственно; |
{выражение2}: |
результат вычисления этого выражения размещается в поле "CP". |
Примеры
CDP p1,10,c1,c2,c3 ; Запрос на выполнение сопроцессором #1
; для выполнения команды с кодом 10
; CR2 и CR3 - операнды, CR1 - результат.
CDPEQ p2,5,c1,c2,c3,2 ; Если флаг Z установлен, то выполнить
; сопроцессором #2 команду с кодом 5,
; CR2 и CR3 - операнды, CR1 - результат.
|
<---- Вернуться к Системе команд --->
|