· другие команды.
Система команд семейства 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 |
Бесконечный цикл |
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.