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

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

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

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

А.1. Обзор

Вэтом и следующем приложениях подробно описывается набор команд ADSP 2106x. В этом приложении рассматриваются типы команд, синтаксис ассемблера и код операции, по которому транслируется команда. Многие типы команд имеют поле для определения операции вычисления. Это операции, которые используют ALU, умножитель или устройство сдвига. Таких команд много, поэтому они описываются отдельно в Приложении В. (Заметим, что пересылка данных между регистрами MR и регистровым файлом рассматриваются как операции умножителя.)

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

I.Команды вычисления и пересылки или модификации, которые определяют параллельное выполнение операции вычисления с одной или двумя пересылками данных или с модификацией индексного регистра.

II.Команды управления последовательностью выполнения программы, которые определяют различные типы переходов, вызовов, возвратов и циклов. Некоторые из этих команд могут также содержать операцию вычисления и/или пересылки данных.

III. Команды пересылки данных, в которых непосредственное поле команды используется как операнд или для адресации.

IV. Прочие команды, такие как модификация и проверка бита, нет операции и простой.

Команды нумеруются от 1 до 23. Некоторые команды имеют несколько синтаксических форм, например, команда четвертого типа имеет четыре различные формы. При программировании номер команды не учитывается, но он соответствует коду операции, распознаваемому аппаратурой ADSP 2106x.

441

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

Многие из команд могут быть условными. Этим командам предшествует «IF» плюс мнемоника условия. В условной команде выполнение всей команды основывается на заданном условии.

А.2. Резюме набора команд

Ниже приведен набор команд ADSP 2106x. Операции вычисления, используемые внутри каждой команды, описываются в Приложении В.

Команды вычисления и пересылки или модификации.

(стр. 455)

1.

 

вычисление,

 

 

 

DM(Ia,Mb)=dreg1,

 

 

 

 

 

PM(Ic,Md)=dreg2

(стр. 456)

2.

IF условие

вычисление;

 

 

 

dreg1=DM(Ia,Mb)

 

 

 

 

 

dreg2=PM(Ic,Md);

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

(стр. 457)

3а. IF условие

вычисление,

 

 

 

DM(Ia,Mb)

 

 

= ureg ;

 

 

 

 

 

 

 

PM(Ic,Md)

 

 

 

 

 

 

 

 

 

 

 

 

3b.

IF условие

вычисление,

 

 

 

DM(Mb,Ia)

 

= ureg ;

 

 

 

 

 

 

 

 

 

 

 

PM(Md,Ic)

 

 

 

 

 

 

 

 

 

 

 

3c.

IF условие

вычисление,

 

 

 

ureg =

 

DM(Ia,Mb)

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

PM(Ic,Md)

 

;

 

3d.

IF условие

вычисление,

 

 

 

ureg =

 

 

DM(Mb,Ia)

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

PM(Md,Ic)

 

;

 

 

 

 

 

 

 

 

 

 

(стр. 459)

4a.

IF условие

вычисление,

 

 

 

DM(Ia,<data6>)

 

=

 

dreg ;

 

 

 

 

 

 

 

PM(Ic,<data6>)

 

 

 

 

 

 

 

 

 

4b.

IF условие

вычисление,

 

 

 

DM(<data6>,Ia)

 

 

= dreg ;

 

 

 

 

 

 

 

 

 

 

 

 

PM(<data6>,Ic)

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

4c.

IF условие

вычисление,

dreg =

 

DM(Ia,<data6>)

 

 

 

 

 

 

 

 

PM(Ic,<data6>)

;

 

 

 

 

 

 

 

4d.

IF условие

вычисление,

dreg =

 

DM(<data6>,Ia)

 

 

 

 

 

 

 

 

 

 

 

PM(<data6>,Ic)

;

(стр. 461)

5.

IF условие

вычисление,

ureg1 = ureg2 ;

 

(стр. 462)

6a.

IF условие

непосредст

DM(Ia,Mb)

 

= dreg ;

 

 

 

 

венный

PM(Ic,Md)

 

 

 

 

 

 

 

 

 

сдвиг

 

 

 

 

 

 

 

 

 

 

 

6b.

IF условие

непосредст

dreg =

 

 

DM(Ia,Mb)

 

 

 

 

 

 

 

 

 

 

 

венный

 

 

 

PM(Ic,Md)

;

 

 

 

 

 

сдвиг

 

 

 

 

 

 

 

 

 

 

(стр. 464)

7.

IF условие

вычисление,

MODIFY

 

(Ia,Mb)

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

(Ic,Md)

 

;

 

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

442

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

Команды управления последовательностью выполнения программы

(стр. 466)

8.

IF условие

 

JUMP

 

 

 

<addr24>

 

(DB)

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

(PC,<reladdr24>)

 

(LA)

 

 

;

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

(CI)

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

(B,LA)

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

(DB,CI)

 

 

 

 

 

 

 

 

 

 

 

 

 

IF условие

 

CALL

 

 

 

<addr24>

 

(DB)

;

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

(PC,<reladdr24>)

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

(стр. 468)

9.

IF условие

 

JUMP

 

 

 

(Md,Ic)

 

(DB)

 

 

 

вычисление

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

(PC,<reladdr24>)

 

(LA)

 

 

 

ELSE

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

(CI) ,

 

 

 

вычисление

 

;

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

(B,LA)

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

(DB,CI)

 

 

 

 

 

 

 

 

 

 

 

 

 

IF условие

 

CALL

 

 

 

(Md,Ic)

 

(DB) ,

 

 

 

вычисление

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

(PC,<reladdr24>)

 

 

 

 

 

ELSE

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

вычисление

;

 

 

(стр. 471)

10.

IF условие

 

JUMP

 

 

 

(Md,Ic)

 

ELSE

 

 

 

вычисление ,

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

DM(Ia,Mb)=dreg

 

 

 

 

 

 

 

 

 

 

(PC,<reladdr24>)

 

 

 

 

 

вычисление ,

 

 

 

11.

 

 

 

RTS

 

 

 

 

 

 

 

 

 

 

 

 

 

dreg =DM(Ia,Mb);

 

(стр. 473)

IF условие

 

 

 

 

(DB)

,

 

 

 

вычисление

 

 

 

 

;

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

(LR)

 

 

 

ELSE вычисление

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

(DB,LR)

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

IF условие

 

RTI

 

 

 

(DB) ,

 

 

 

 

вычисление

 

 

;

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

ELSE вычисление

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

(стр. 475)

12. LCNTR =

 

<data16>

,

DO

 

<addr24>

UNTIL

 

 

 

 

 

 

 

ureg

 

 

 

 

 

 

 

 

 

(PC,<reladdr24>)

LCE

;

 

(стр. 477)

13.

DO

 

 

<addr24>

 

 

 

 

UNTIL условие окончания ;

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

(PC,<reladdr24>)

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

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

443

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

Команды непосредственной пересылки

(стр. 479)

14а.

 

DM(<addr32>)

 

 

= ureg

;

 

 

 

 

PM(<addr24>)

 

 

 

 

 

 

 

 

14b.

 

ureg =

 

DM(<addr32>)

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

PM(<addr24>)

 

 

;

 

(стр. 480)

15a.

 

DM(<data32>,Ia)

 

= ureg

;

 

 

 

 

 

 

PM(<data24>,Ic)

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

15b.

 

ureg =

 

 

 

DM(<data32>,Ia)

 

 

 

 

 

 

 

 

 

 

 

 

PM(<data24>,Ic)

 

;

(стр. 481)

16.

 

DM(Ia,Mb)

 

= <data32> ;

 

 

 

 

 

 

 

 

 

PM(Ic,Md)

 

 

 

 

 

 

 

 

(стр. 482)

17.

 

ureg = <data32> ;

 

 

 

 

 

 

Смешанные команды

(стр. 484)

18.

 

BIT

 

SET

 

 

sreg <data> ;

 

 

 

 

 

 

CLR

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

TGL

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

TST

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

XOR

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

(стр. 485)

19а.

 

MODIFY

 

(Ia,<data32>)

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

(Ic,<data24>)

 

;

 

 

 

 

 

 

 

19b.

 

BITREV

 

(Ia,<data32>)

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

(Ic,<data24>)

 

 

;

 

 

 

 

 

 

(стр. 487)

20.

 

PUSH

 

LOOP ,

 

PUSH

 

STS ,

 

PUSH

 

PVSTK , FLUSH CACHE;

 

 

 

 

 

 

 

 

 

POP

 

 

 

 

 

POP

 

 

 

 

 

POP

 

 

(стр. 488)

21.

 

NOP ;

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

(стр. 489)

22.

 

IDLE ;

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

(стр. 490)

23.

 

IDLE16 ;

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

(стр. 491)

24.

 

CJUMP

 

функция

 

 

 

(DB) ;

 

 

 

 

 

 

 

 

 

 

(PC,<reladdr24>)

 

 

 

 

 

RFRAME ;

 

 

 

 

 

 

 

 

 

 

 

 

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

444

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

Система обозначения набора команд

Обозначение

Значение

ПРОПИСНЫЕ

Явный синтаксис – ключевое слово ассемблера (только для

 

обозначения; ассемблер не чувствителен к регистру)

;

Точка с запятой (окончание команды)

,

Запятая (разделяет параллельные операции в команде)

курсив

Необязательная часть команды

Вариант 1

Список вариантов между вертикальными штрихами (выбирается один)

Вариант 2

 

вычисление

Операции ALU, умножителя, устройства сдвига или

 

многофункциональная операция (см. Приложение В)

непосредствен

Непосредственная операция устройства сдвига (см. Приложение В)

ный сдвиг

 

условие

Условие (см. коды условий ниже)

Условие

Условие окончания цикла (см. коды условий ниже)

окончания

 

ureg

Универсальный регистр (УР)

sreg

Системный регистр (СР)

dreg

Регистр данных (регистровый файл (РФ)): R15 R0 или F15 F0

Ia

I7 I0 (индексный регистр DAG1)

Mb

М7 М0 (регистр модификации DAG1)

Ic

I15 I8 (индексный регистр DAG2)

Md

М15 М8 (регистр модификации DAG2)

<datan>

n разрядное непосредственное значение данных

<addrn>

n разрядное непосредственное значение адреса

<reladdrn>

n разрядное непосредственное значение адреса относительно счетчика

 

команд (РС)

(DB)

Задержанный переход

(LA)

Прерывание цикла (извлечение данных из стеков цикла и стека РС при

 

переходе)

(CI)

Очистка прерывания

445

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

Коды условий и завершения циклов(IF и DO UNTIL)

В условных командах выполнение всей команды зависит от заданного условия.

Условие

Описание

Условие

Описание

EQ

Результат ALU равен нулю

NE

Результат ALU не равен нулю

LT

Результат ALU меньше

GE

Результат ALU больше или

 

нуля

 

равен нулю

LE

Результат ALU меньше или

GT

Результат ALU больше нуля

 

равен нулю

 

 

AC

Перенос в ALU

NOT AC

Нет переноса в ALU

AV

Переполнение результата

NOT AV

Нет переполнения результата

 

ALU

 

ALU

MV

Переполнение результата

NOT MV

Нет переполнения результата

 

умножителя

 

умножителя

MS

Результат умножителя

NOT MS

Результат умножителя не

 

отрицательный

 

отрицательный

SV

Устройство сдвига

NOT SV

Устройство сдвига

 

переполнено

 

переполнено

SZ

Результат устройства сдвига NOT SZ

Результат устройства сдвига

 

ноль

 

ноль

FLAG0_IN Значение на входе флага 0

NOT FLAG0_IN Значение на входе флага 0

FLAG1_IN Значение на входе флага 1

NOT FLAG1_IN Значение на входе флага 1

FLAG2_IN Значение на входе флага 2

NOT FLAG2_IN Значение на входе флага 2

FLAG3_IN Значение на входе флага 3

NOT FLAG3_IN Значение на входе флага 3

TF

Флаг проверки бита

NOT TF

Сброшен флаг проверки бита

BM

Ведущий

NBM

Не ведущий

LCE

Счетчик цикла пуст (DO

FOREVER

Всегда ложно (DO UNTIL)

 

UNTIL)

 

 

NOT LCE

Счетчик цикла не пуст (IF)

TRUE

Всегда истинно (IF)

Универсальные регистры

Регистр

Функция

Регистровый файл данных

R15 R0

Ячейки памяти регистрового файла, данные с фиксированной точкой

F15 F0

Ячейки памяти регистрового файла, данные с плавающей точкой

Программный автомат

PC

Счетчик команд (только для чтения)

PCSTK

Вершина стека РС

PCSTKP

Указатель стека РС

FADDR

Адрес выборки (только для чтения)

DADDR

Адрес декодирования (только для чтения)

LADDR

Адрес окончания цикла, код; вершина стека адреса цикла

CURLCNTR

Счетчик текущего цикла; вершина стека счетчика цикла

LCNTR

Счетчик цикла

446

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

Генераторы адреса данных

I7 – I0

Индексные регистры DAG1

M7 – M0

Регистры модификации DAG1

L7 – L0

Регистры длины DAG1

B7 – B0

Регистры базового адреса DAG1

I15 – I8

Индексные регистры DAG2

M15 – M8

Регистры модификации DAG2

L15 – L8

Регистры длины DAG2

B15 – B8

Регистры базового адреса DAG2

Обмен данными между шинами

PX1

Обмен данными между шинами PMD и DMD (16 разрядов)

PX2

Обмен данными между шинами PMD и DMD (32 разряда)

PX

48 разрядная комбинация РХ1 и РХ2

Таймер

 

TPERIOD

Период таймера

TCOUNT

Счетчик таймера

Системные регистры

MODE1

Состояние и управление режимом

MODE2

Состояние и управление режимом

IRPTL

Фиксация прерывания

IMASK

Маскирование прерывания

IMASLP

Указатель маски прерывания (для вложенных)

ASTAT

Флаги арифметического состояния, флаг проверки бита и т. д.

STKY

Флаги «залипшего» арифметического состояния, флаги состояния стека

и т.д.

 

USTAT1

Регистр определяемого пользователем состояния 1

USTAT2

Регистр определяемого пользователем состояния 2

Адресация памяти в командах Прямая:

Абсолютная

 

Команды типов 8, 12, 13, 14

 

Примеры:

 

dm(0x000015F0)=astat;

 

if ne jump labål2;

{‘label2’- это метка адреса}

Относительно РС

 

Команды типов 8, 9, 10, 12, 13

 

Примеры:

 

call(pc,10), r0=r6+r3;

 

Do(pc,length) until sz;

{‘length’– это переменная}

447

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

Косвенная (с использованием регистров DAG):

Пост&модификация с использованием регистра М, с обновлением регистра I

Команды типов 1, 3, 6, 16

Примеры:

f5=pm(i9,m12);

dm(i0,m3)=r3, r1=pm(i15,m10);

Пред&модификация с использованием регистра М, без обновления регистра I

Команды типов 3, 9, 10

Примеры:

r1=pm(m10,i15);

jump(m13,i11);

Пост&модификация с использованием непосредственного значения, с обновлением регистра I

Команды типов 4

Примеры:

f15=dm(i0,6);

if av r1=pm(i15,0x11);

Пред&модификация с использованием непосредственного значения, без обновления регистра I

Команды типов 4, 15

Примеры:

if av r1=pm(0x11,i15); dm(127,i5)=laddr;

А.3. Система обозначения кодов операций

В кодах операций ADSP 2106x некоторые биты явно определяются как нули или единицы. Значения других битов и полей задают различные параметры для команд. Задача этого раздела – определить эти биты и поля кодов операций. Биты, которые не определяются, игнорируются при декодировании команды процессором; они резервируются для использования в будущем.

A

Код прерывания цикла

 

0

Извлечение данных из стеков цикла и стека РС при переходе

 

1

Нет извлечения данных из стеков цикла и стека РС при переходе

ADDR

Поле непосредственного значения адреса

AI

Регистр вычислительного устройства

 

0000

MR0F

 

0001

MR1F

448

Коды условий
0 31

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

0010 MR2F

0100 MR0B

0101 MR1B

0110 MR2B

BТип команды перехода

0Переход

1Вызов

BOP Код выбора операции с битом 000 Установка 001 Очистка 010 Переключение

100Проверка

101XOR

COMPUTE Поле операции вычисления (см. Приложение В)

COND

CI

Код очистки прерывания

 

0

Очистить текущее прерывание

 

1

Не очищать текущее прерывание

CU

Код выбора вычислительного устройства

 

00

ALU

 

01

Умножитель

 

10

Устройство сдвига

DATA

Поле непосредственного значения данных

DEC

Код уменьшения значения счетчика

 

0

Нет уменьшения значения счетчика

 

1

Уменьшение значения счетчика

DMD Управление доступом к памяти данных

0Чтение

1Запись

DMI Номер индексного регистра (I), DAG1

0 7

DMM Номер регистра модификации (М), DAG1

0 7

DREG Регистр регистрового файла

0 15

449

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

EКод фразы ELSE

0Нет фразы ELSE

1Есть фраза ELSE

FC

Код очистки кэша

 

0

Нет очистки кэша

 

1

Очистка кэша

G

Выбор генератор адреса данных (DAG)/памяти

 

0

DAG1 или память данных

 

1

DAG2 или память программы

INC

Код увеличения значения счетчика

 

0

Нет увеличения значения счетчика

 

1

Увеличения значения счетчика

JТип перехода JUMP

0Незадержанный

1Задержанный

LPO Код извлечения данных из стеков цикла

0Нет извлечения данных из стека

1Извлечения данных из стека

LPU Код помещения данных в стек цикла

0Помещения данных в стек

1Помещения данных в стек

LR

Код повторного входа в цикл

 

0

Нет повторного входа в цикл

 

1

Повторный вход в цикл

NUM

Вектор прерываний

 

0 7

 

OPCODE Код операции вычислительного устройства (см. Приложение В) PMD Управление доступом к памяти программы

0Чтение

1Запись

PMI Номер индексного регистра (I), DAG2

8 15

PMM Номер регистра модификации (М), DAG2

8 15

PPO Код извлечения данных из стека РС

450