Набор команд А
24. Команда, генерируемая компилятором
Синтаксис: |
|
|
|
|
CJUMP |
|
функция |
|
(DB) ; |
|
|
|
|
(PC,<reladdr24>) |
|
|
RFRAME ; |
|
|
|
|
Функция:
Команда CJUMP генерируется компилятором С для вызовов функций и не предназначена для использования в программах на ассемблере. CJUMP комбинирует прямой или относительно РС переход с операциями пересылки между регистрами, в которых сохраняются указатели стека и фрейма. Команда RFRAME изменяет направление передачи между регистрами для восстановления указателей стека и фрейма.
Символ «функция» – это 24 разрядный адрес для прямого перехода. Адрес относительно РС – это 24 разрядное число в виде двоичного дополнения. Модификатор DB означает задержанный переход.
Различные формы этой команды выполняют следующие операции:
Команда, генерируемая компилятором |
Выполняемые операции |
CJUMP функция (DB); |
JUMP функция (DB), R2=I6, I6=I7; |
CJUMP (PC,<reladdr24>) (DB); |
JUMP (PC, функция) (DB), R2=I6, I6=I7; |
RFRAME; |
I7=I6, I6=DM(0,I6); |
Код операции: (для прямого перехода)
А Набор команд
Код операции: (для перехода относительно РС)
Поле ADDR определяет 24 разрядный адрес памяти программы для «функции». RELADDR – это 24 разрядное число в виде двоичного дополнения, которое прибавляется к текущему значению РС для генерации адреса перехода.
Код операции: (RFRAME)
Справочник
В вычислительных операций
В.1. Обзор
Вычислительные операции выполняются в умножителе, ALU и устройстве сдвига. 23 разрядное вычислительное поле подобно мини команде внутри команды ADSP 21000 и может определять ряд вычислительных операций.
В этом приложении подробно описывается каждая вычислительная операция, синтаксис ассемблера и код операции.
Вычислительными операциями называются:
♦однофункциональная операция, выполняемая одним вычислительным устройством;
♦многофункциональная операция, которая определяет параллельное выполнение операций умножителем и ALU или выполнение двух операций ALU;
♦передача данных между регистрами MR, которая является специальным типом вычислительной операции, использующейся для обращения к аккумулятору с фиксированной точкой в умножителе.
Для каждой операции определяется синтаксис ассемблера, функция, код операции и содержание. Используемые обозначения и сокращения описаны в начале Приложения А.
В.2. Однофункциональные операции
Вычислительное поле однофункциональной операции выглядит следующим образом:
22 |
21 |
20 |
19 |
18 |
17 |
16 |
15 |
14 |
13 |
12 |
11 |
10 |
9 |
8 |
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0 |
0 |
CU |
|
|
|
OPCODE |
|
|
|
RN |
|
|
RX |
|
|
RY |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
В Справочник вычислительных операций
Операция, определенная полем OPCODE, выполняется в вычислительном устройстве, определяемом полем CU. X и Y операнды принимаются из регистров данных RX и RY. Операнд результата возвращается в регистр данных RN.
Поле CU (вычислительное устройство) означает следующее:
CU = 00 |
ALU |
CU = 01 |
Умножитель |
CU = 10 |
Устройство сдвига |
В некоторых операциях устройства сдвига регистр данных RN используется и как адресат для операнда результата и как источник третьего входного операнда.
Все допустимые операции и значения их 8 разрядного кода операции (OPCODE) перечисляются в следующих разделах. В каждом разделе описывается одно из вычислительных устройств (ALU, умножитель или устройство сдвига). В разделе сначала приводятся синтаксис и код операции для всех операций вычислительного устройства, а затем каждая операция описывается подробно.
В.2.1. Операции ALU
В этом разделе описываются операции ALU. В табл. В.1 и В.2 приведены синтаксис и код операции для операций ALU с фиксированной и плавающей точкой соответственно. Далее в этом разделе содержится подробное описание каждой операции.
Синтаксис |
Код операции |
Rn = Rx + Ry |
0000 0001 |
Rn = Rx – Ry |
0000 0010 |
Rn = Rx + Ry + CI |
0000 0101 |
Rn = Rx – Ry +CI – 1 0000 0110 |
Rn = (Rx + Ry)/2 |
0000 1001 |
COMP(Rx, Ry) |
0000 1010 |
Rn = Rx + CI |
0010 0101 |
Rn = Rx + CI – 1 |
0010 0110 |
Rn = Rx + 1 |
0010 1001 |
Rn = Rx – 1 |
0010 1010 |
Rn = – Rx |
0010 0010 |
Rn = ABS Rx |
0011 0000 |
Rn = PASS Rx |
0010 0001 |
Rn = Rx AND Ry |
0100 0000 |
Rn = Rx OR Ry |
0100 0001 |
Rn = Rx XOR Ry |
0100 0010 |
Rn = NOT Rx |
0100 0011 |
Rn = MIN(Rx, Ry) |
0110 0001 |
Справочник B вычислительных операций
Rn = MAX(Rx, Ry) 0110 0010
Rn = CLIP Rx BY Ry 0110 0011
Таблица В.1. Операции ALU с фиксированной точкой
Синтаксис |
Код операции |
Fn = Fx + Fy |
1000 0001 |
Fn = Fx – Fy |
1000 0010 |
Fn = ABS (Fx + Fy) |
1001 0001 |
Fn = ABS (Fx – Fy) |
1001 0010 |
Fn = (Fx + Fy)/2 |
1000 1001 |
COMP(Fx, Fy) |
1000 1010 |
Fn = – Fx |
1010 0010 |
Fn = ABS Fx |
1011 0000 |
Fn = PASS Fx |
1010 0001 |
Fn = RND Fx |
1010 0101 |
Fn = SCALB Fx BY Ry |
1011 1101 |
Rn = MANT Fx |
1010 1101 |
Rn = LOGB Fx |
1100 0001 |
Rn = FIX Fx BY Ry |
1101 1001 |
Rn = FIX Fx |
1100 1001 |
Rn = TRUNC Fx BY Ry |
1101 1101 |
Rn = TRUNC Fx |
1100 1101 |
Fn = FLOAT Rx BY Ry |
1100 1101 |
Fn = FLOAT Rx |
1100 1010 |
Fn = RECIPS Fx |
1100 0100 |
Fn = RSQRTS Fx |
1100 0101 |
Fn = Fx COPYSIGN Fy |
1110 0000 |
Fn = MIN(Fx, Fy) |
1110 0001 |
Fn = MAX (Fx, Fy) |
1110 0010 |
Fn = CLIP Fx BY Fy |
1110 0011 |
Один и тот же регистр в регистровом файле начинается с префикса “F” (в исходном коде ассемблера), когда он используется в вычислениях с плавающей точкой. И начинается с префикса “R”, когда используется в вычислениях с фиксированной точкой. Например, следующие команды используют одни и те же регистры:
F0=F1*F2; умножение с плавающей точкой
R0=R1*R2; умножение с фиксированной точкой
Префиксы F и R не влияют на передачу 32 разрядных (или 40 разрядных) данных; они только определяют, как ALU, умножитель, или устройство сдвига обрабатывают данные. F и R могут быть прописными и строчными; в ассемблере не учитывается регистр клавиатуры.
Таблица В.2. Операции ALU с плавающей точкой
В Справочник вычислительных операций
Rn = Rx + Ry
Синтаксис:
Rn = Rx + Ry
Функция:
Сложение полей с фиксированной точкой (ПФТ) в регистрах Rx и Ry. Результат помещается в ПФТ регистра Rn. В оставшиеся биты ПФТ регистра Rn записываются нули. В режиме насыщения (бит режима насыщения ALU установлен в MODE1) при положительном переполнении в Rn возвращается максимальное положительное число (0x7FFF FFFF), а при отрицательном переполнении возвращается максимальное отрицательное число (0x8000 0000).
Флаги состояния:
AZ |
Установлен, если результат с фиксированной точкой равен 0, иначе — |
|
сброшен |
AU |
Сброшен |
AN |
Установлен, если старший бит результата равен 1, иначе — сброшен |
AV |
Установлен, если результат операции «исключающее ИЛИ» (XOR) двух |
|
старших разрядов результата равен 1, иначе — сброшен |
AC |
Установлен, если произошел перенос за старший разряд результата, иначе — |
|
сброшен |
AS |
Сброшен |
AI |
Сброшен |
Справочник B вычислительных операций
Rn = Rx – Ry
Синтаксис:
Rn = Rx – Ry
Функция:
Вычитается ПФТ регистра Ry из ПФТ регистра Rx. Результат помещается в ПФТ регистра Rn. В оставшиеся биты ПФТ регистра Rn записываются нули. В режиме насыщения (бит режима насыщения ALU установлен в MODE1) при
положительном переполнении в Rn возвращается максимальное положительное число (0x7FFF FFFF), а при отрицательном переполнении возвращается максимальное отрицательное число (0x8000 0000).
Флаги состояния:
AZ |
Установлен, если результат с фиксированной точкой равен 0, иначе — |
|
сброшен |
AU |
Сброшен |
AN |
Установлен, если старший бит результата равен 1, иначе — сброшен |
AV |
Установлен, если результат операции «исключающее ИЛИ» (XOR) двух |
|
старших разрядов результата равен 1, иначе — сброшен |
AC |
Установлен, если произошел перенос за старший разряд результата, иначе — |
|
сброшен |
AS |
Сброшен |
AI |
Сброшен |
В Справочник вычислительных операций
Rn = Rx + Ry + CI
Синтаксис:
Rn = Rx + Ry + CI
Функция:
Сложение с переносом (AC из ASTAT) ПФТ регистров Rx и Ry. Результат помещается в ПФТ регистра Rn. В оставшиеся биты ПФТ регистра Rn записываются нули. В режиме насыщения (бит режима насыщения ALU установлен в MODE1) при положительном переполнении в Rn возвращается максимальное положительное число (0x7FFF FFFF), а при отрицательном переполнении возвращается максимальное отрицательное число (0x8000 0000).
Флаги состояния:
AZ |
Установлен, если результат с фиксированной точкой равен 0, иначе — |
|
сброшен |
AU |
Сброшен |
AN |
Установлен, если старший бит результата равен 1, иначе сброшен |
AV |
Установлен, если результат операции «исключающее ИЛИ» (XOR) двух |
|
старших разрядов результата равен 1, иначе — сброшен |
AC |
Установлен, если произошел перенос за старший разряд результата, иначе — |
|
сброшен |
AS |
Сброшен |
AI |
Сброшен |
Справочник B вычислительных операций
Rn = Rx – Ry + CI – 1
Синтаксис:
Rn = Rx – Ry + CI – 1
Функция:
Вычитание с заемом (AC – 1 из ASTAT) ПФТ регистра Ry из ПФТ регистра Rx. Результат помещается в ПФТ регистра Rn. В оставшиеся биты ПФТ регистра Rn записываются нули. В режиме насыщения (бит режима насыщения ALU установлен в MODE1) при положительном переполнении в Rn возвращается максимальное положительное число (0x7FFF FFFF), а при отрицательном переполнении возвращается максимальное отрицательное число (0x8000 0000).
Флаги состояния:
AZ |
Установлен, если результат с фиксированной точкой равен 0, иначе — |
|
сброшен |
AU |
Сброшен |
AN |
Установлен, если старший бит результата равен 1, иначе — сброшен |
AV |
Установлен, если результат операции «исключающее ИЛИ» (XOR) двух |
|
старших разрядов результата равен 1, иначе — сброшен |
AC |
Установлен, если произошел перенос за старший разряд результата, иначе — |
|
сброшен |
AS |
Сброшен |
AI |
Сброшен |
В Справочник вычислительных операций
Rn = (Rx + Ry)/2
Синтаксис:
Rn = (Rx + Ry)/2
Функция:
Сложение ПФТ регистров Rx и Ry и деление результата на 2. Результат помещается в ПФТ регистра Rn. В оставшиеся биты ПФТ регистра Rn записываются нули. Округление результата к ближайшему или усечение (стандарт IEEE), в зависимости от установки бита режима округления в регистре MODE1.
Флаги состояния:
AZ |
Установлен, если результат с фиксированной точкой равен 0, иначе — |
|
сброшен |
AU |
Сброшен |
AN |
Установлен, если старший бит результата равен 1, иначе — сброшен |
AV |
Сброшен |
AC |
Установлен, если произошел перенос за старший разряд результата, иначе — |
|
сброшен |
AS |
Сброшен |
AI |
Сброшен |