Проектирование устройств на сигнальных процессорах: Учебное пособие (Проектирование цифровых устройств аппаратуры связи на ЦСП семейства ADSP-21xx), страница 27

·  другие команды.

Система команд семейства ADSP-21xx обеспечивает пересылку данных между всеми регистрами, а также между большинством регистров и памятью.

Группа вычислительных команд включает в себя команды, выполняемые АЛУ, MAC и устройством сдвига.

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

Поле кода условия команды определяет, будет или не будет выполняться условная команда (вычислительная операция, переход, прерывание, вызов подпрограммы, возврат из подпрограммы, или насыщение умножителя/аккумулятора). В таблице 2 приведены коды условий и их источники. Так как арифметический статус записывается в регистр ASTAT в конце машинного цикла, условная логика представляет условия, сгенерированные в предыдущем цикле. Поддерживается условное выполнение большинства вычислительных операций.

Помимо команд управления ходом исполнения программы JUMP и CALL, имеется команда организации цикла DO UNTIL.

В отличии от большинства других языков Ассемблера, Ассемблер семейства ADSP-21xx использует алгебраический синтаксис, облегчающий написание и улучшающий читаемость программ. Источники и приемники результатов вычислений и пересылок данных записываются в явном виде в каждом операторе. Каждая команда ассемблера преобразуется компилятором в одно 24-разрядное слово команды, исполняемой за один цикл.

B.1. Синтаксис описания команд

Все команды заканчиваются точкой с запятой. Запятая отделяет отдельные части в многофункциональной команде.

При описании команд используются следующие обозначения:

Квадратные скобки [] – обозначают необязательную часть команды.

Вертикальная линия | – список операндов, разделяющихся вертикальной линией, означает, что должен быть выбран один из операндов.

*                 данный бит изменяется после выполнения команды;

-                 данный бит не изменяется командой;

0 или 1       означает, что данный бит всегда очищается или устанавливается командой;

cond          одно из условий EQ, NE, GT, GE, LT, LE, NEG, POS, AV, NOT AV, AC, NOT AC, MV, NOT MV, NOT CE согласно таблице 2;

term          одно из условий EQ, NE, GT, GE, LT, LE, NEG, POS, AV, NOT AV, AC, NOT AC, MV, NOT MV, CE, FOREVER согласно таблице 2.

<addr>     кодирует непосредственное значение адреса, которое входит в команду. Адрес может быть либо непосредственным значением (константой), либо программной меткой;

Символ [,…] означает запись таких инструкций в произвольном порядке с разделением запятыми;

<ALU>, <MAC>, <SHIFT> операции ALU, MAC и устройства сдвига соответственно;

<dregs>   один из регистров AX0, AX1, AY0, AY1, AR, MX0, MX1, MY0, MY1, MR0, MR1, MR2, SI, SE, SR0, SR1;

<regs>     один из регистров AX0, AX1, AY0, AY1, AR, MX0, MX1, MY0, MY1, MR0, MR1, MR2, SI, SE, SR0, SR1, I0-I7, M0-M7, L0-L7, SB, PX, ASTAT, MSTAT, SSTAT, IMASK, ICNTL, CNTR, OWRCNTR, RX0, RX1, TX0, TX1, IFC;

<exp>        константа от –127 до 127.

Таблица B.1 — Поля условий команд

Синтаксис

Условие

Верно, если

EQ

Равно нулю

AZ=1

NE

Не равно нулю

AZ=0

LT

Меньше нуля

AN XOR AV = 1

GE

Больше или равно нулю

AN XOR AV = 0

LE

Меньше либо равно нулю

(AN XOR AV) OR AZ=1

GT

Больше нуля

(AN XOR AV) OR AZ=0

AC

Перенос АЛУ

AC=1

NOT AC

Нет переноса в АЛУ

AC=0

AV

Переполнение АЛУ

AV=1

NOT AV

Нет переполнения АЛУ

AV=0

MV

Переполнение умножителя

MV=1

NOT MV

Нет переполнения умножителя

MV=0

NEG

X отрицателен

AS=1

POS

X положителен

AS=0

CE

Число повторений цикла истекло

FOREVER

Бесконечный цикл