Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Руководство пользователя по сигнальным процессорам Sharc

.pdf
Скачиваний:
143
Добавлен:
01.05.2014
Размер:
9.49 Mб
Скачать

Набор команд А

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);

Код операции: (для прямого перехода)

491

А Набор команд

Код операции: (для перехода относительно РС)

Поле ADDR определяет 24 разрядный адрес памяти программы для «функции». RELADDR – это 24 разрядное число в виде двоичного дополнения, которое прибавляется к текущему значению РС для генерации адреса перехода.

Код операции: (RFRAME)

492

Справочник В вычислительных операций

В.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

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

493

В Справочник вычислительных операций

Операция, определенная полем 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

494

Справочник 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 с плавающей точкой

495

В Справочник вычислительных операций

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

Сброшен

496

Справочник 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

Сброшен

497

В Справочник вычислительных операций

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

Сброшен

498

Справочник 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

Сброшен

499

В Справочник вычислительных операций

Rn = (Rx + Ry)/2

Синтаксис:

Rn = (Rx + Ry)/2

Функция:

Сложение ПФТ регистров Rx и Ry и деление результата на 2. Результат помещается в ПФТ регистра Rn. В оставшиеся биты ПФТ регистра Rn записываются нули. Округление результата к ближайшему или усечение (стандарт IEEE), в зависимости от установки бита режима округления в регистре MODE1.

Флаги состояния:

AZ

Установлен, если результат с фиксированной точкой равен 0, иначе —

 

сброшен

AU

Сброшен

AN

Установлен, если старший бит результата равен 1, иначе — сброшен

AV

Сброшен

AC

Установлен, если произошел перенос за старший разряд результата, иначе —

 

сброшен

AS

Сброшен

AI

Сброшен

500