Xreferat.com » Рефераты по информатике и программированию » Система команд. Структура слова команд. Синтаксис команд. Группы команд

Система команд. Структура слова команд. Синтаксис команд. Группы команд

Федеральное агентство по образованию

Пензенский государственный университет

Кафедра "Информационной безопасности систем и технологий"


Реферат на тему

“ Система команд. Структура слова команд.

Синтаксис команд. Группы команд”


Дисциплина: ЦиМПТ

Группа:

Студент:


Пенза 2006 г.

Содержание


Введение

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

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

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

Заключение

Список использованных источников


Введение


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

Команды группируются по четырем категориям:

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

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

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

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

Команды нумеруются от 1 до 23. Некоторые команды имеют несколько синтаксических форм, например, команда четвертого типа имеет четыре различные формы. При программировании номер команды не учитывается, но он соответствует коду операции, распознаваемому аппаратурой ADSP-2106х. Многие из команд могут быть условными. Этим командам предшествует "IF" плюс мнемоника условия. В условной команде выполнение всей команды основывается на заданном условии.

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


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

Синтаксис:

compute,

DM (Ia,Mb) =dregl, dregl= DM (Ia,Mb)

PM (Ic,Md) =dreg2 dreg2=PM (Ic,Md)

Функция:

Параллельный доступ к памяти данных и памяти программы из регистрового файла. Определенные регистры I используются для адресации памяти данных и памяти программы. Значение I поет-модифицируется и обновляется значением определенного регистра М. Предмодификация адреса со смещением не поддерживается.

Примеры:

R7=BSET R6 BY RO, DM (10,M3) =R5, PM (111,M15) =R4; R8=DM (I4,M1), PM (I12,M12) =R0;

Код операции:


47 46 45 44 43 42 41 40 39 38 37 36 35 34 33 32 31 30 29 28 27 26 25 24 23


D



P

DM



PM

001

M

DMI

DMM

M

DREG

PMI

PMM

DREG


D



D





22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0


COMPUTE

Тип обращения (чтение или запись) выбирается DMD и PMD. Ячейка памяти регистрового файла определяется DMDREG и PMDREG. DMI и PMI определяют регистр I для памяти данных и памяти программы. DMM и РММ определяют регистр М, используемый для обновления регистра I. Поле COMPUTE определяет операцию вычисления, выполняемую параллельно с доступом к данным. Если операция вычисления не задана в команде, то это операция NO Р.

Операция вычисления, необязательное условие

Синтаксис:

IF условие вычисление;

Функция:

Условная команда вычисления. Команда выполняется, если при проверке определенное условие верно.

Примеры: IF MS MRF=0; F6= (F2+F3) /2;

Код операции: 47 46 45 44 43 42 41 40 39 38 37 36 35 34 33 32 31 30 29 28 27 26 25 24 23


000 00001
COND

22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0

COMPUTE

Если заданное полем COND условие верно, то определенная в поле COMPUTE операция выполняется. Если условие в команде не определено, то COND является условием TRUE, и вычисление выполняется всегда.

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

Функция:

Обращения между памятью данных или памятью программы и универсальным регистром. Определенные регистры I используются для адресации памяти данных и памяти программы. Значение I либо пред-модифицируется (М, I) либо пост-модифицируется (I, М) значением определенного регистра М. При пост-модификации значение регистра I обновляется модифицированным значением. Если определена операция вычисления, то она выполняется параллельно с доступом к данным. Если условие определено, то оно влияет на выполнение всей команды.

Замечание:

Универсальный регистр (ureg) может находиться не в том же самом DAG (т.е. DAG1 или DAG2), что и la/Mb или Ic/Md.

Примеры:

R6=R3-R11, DM (IO,M1) =ASTAT;

IF NOT SV F8=CLIP F2 BY F14, PX=PM (112,M12);

Код операции:


47 46 45 44 43 42 41 40 39 38 37 36 35 34 33 32 31 30 29 28 27 26 25 24 23

010 Т I м COND G D UREG

22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0


COMPUTE

COND определяет условие для проверки. Если условие в команде не определено, то COND является условием TRUE, и команда выполняется всегда.

Тип доступа (чтение или запись) выбирается D. G выбирает память данных или память программы. UREG определяет универсальный регистр. I определяет индексный регистр I, М - регистр модификации М. U выбирает либо пред-модификацию без обновления либо пост-модификацию с обновлением. Поле COMPUTE определяет вычислительную операцию, выполняемую параллельно с доступом к данным. Если в команде не определено никакой операции вычисления, то это поле NOR

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

Синтаксис:

DM (Ia,<data6>) PM (Ic,<data6>)

DM (<data6>, Ia) PM (<data6>, Ic)

dreg = DM (Ia,<data6>) PM (Ic,<data6>)

dreg = DM (<data6>, Ia) PM (<data6>, Ic)

Функция:

Обращения между памятью данных или памятью программы и регистровым файлом. Определенные регистры I используются для адресации памяти данных и памяти программы. Значение I либо пред-модифицируется (data, I), либо поет-модифицируется (I, data) непосредственным значением данных. При пост-модификации регистр I обновляется модифицированным значением. Если определена операция вычисления, то она выполняется параллельно с доступом к данным. Если условие определено, то оно влияет на выполнение всей команды.

Примеры:

IF FLAG0_IN F1=F15*F12, F11=PM (110,40); R12=R3 AND Rl, DM (6, II) =R6;

Код операции:


47 46 45 44 43 42 41 40 39 38 37 36 35 34 33 32 31 30 29 28 27 26 25 24 23

011 0 I G D и COND DATA DREG

22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0


COMPUTE

COND определяет условие для проверки. Если условие в команде не определено, то COND является условием TRUE, и команда выполняется всегда.

D выбирает тип обращения (чтение или запись). G выбирает память данных или память программ. DREG определяет регистр регистрового файла. I определяет индексный регистр I. DATA определяет 6-разрядное значение модификации в виде двоичного дополнения. U определяет либо пред-модификацию без обновления, либо пост-модификацию с обновлением. Поле COMPUTE определяет вычислительную операцию, выполняемую параллельно с доступом к данным. Если в команде не определено никакой операции вычисления, то это поле NOR

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

Синтаксис:

IF условие вычисление, uregl=ureg2;

Функция:

Передача данных из одного универсального регистра в другой. Если операция вычисления определена, она выполняется параллельно с доступом к данным. Если условие определено, то оно влияет на выполнение всей команды.

Примеры:

IF TF MRF=R2*R6 (SSFR), M4=R0; LCNTR=L7;

Код операции:


47 46 45 44 43 42 41 40 39 38 37 36 35 34 33 32 31 30 29 28 27 26 25 24 23

Oil 1 Source UREG COND Dest UREG

22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0


COMPUTE

COND определяет условие для проверки. Если никакого условия в команде не определено, то COND является условием TRUE, и команда выполняется всегда.

Source UREG указывает универсальный регистр - источник данных. Dest UREG указывает универсальный регистр - адресат. Поле COMPUTE определяет операцию вычисления, выполняемую параллельно с доступом к данным. Если в команде не определено никакой операции вычисления, то это поле NOP.

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

Синтаксис:

a. IF условие Непосредственный сдвиг

DM (Ia,Mb) PM (Ic,Md) = dreg;

b. IF условие Непосредственный сдвиг

dreg = DM (Ia,Mb) PM (Ic,Md)

Функция:

Операция непосредственного сдвига - это операция устройства сдвига. Y-операнд - это непосредственные данные (одно 8-разрядное число или два 6-разрядных числа, в зависимости от операции). Х-операнд и результат являются регистрами регистрового файла.

Если определен доступ из регистрового файла к памяти данных или памяти программы, то он выполняется параллельно с операцией устройства сдвига. Регистр I используется для адресации памяти данных и памяти программы. Значение I поет-модифицируется значением определенного регистра М и обновляется модифицированным значением. Если условие определено, то оно влияет на выполнение всей команды.

Замечание: см. раздел 4.4.1 "Ограничения на передачу данных с использованием регистров DAG" в главе 4 Передача данных.

Примеры:

IF GT R2=R6 LSHIFT BY 30, DM (14,M4) =R0; IF NOT SZ R3=FEXT Rl BY 8: 4;

Код операции: (с доступом к данным)

47 46 45 44 43 42 41 40 39 38 37 36 35 34 33 32 31 30 29 28 27 26 25 24 23

100 0 I м COND G D DATAEX DREG

22 21 20 19 18 17 16 15 14 13 1211 10 9 8 7 6 5 4 3 2 1 0


0 SHIFTOP DATA RN RX

Код операции: (без доступа к данным)


47 46 45 44 43 42 41 40 39 38 37 36 35 34 33 32 31 30 29 28 27 26 25 24 23

000 00010
COND
DATAEX

22 21 20 19 18 17 16 15 14 13 1211 10 9 8 7 6 5 4 3 2 1 0


0 SHIFTOP DATA RN RX

COND определяет условие для проверки. Если в команде не определено никакого условия, то COND является условием TRUE, и команда выполняется всегда.

SHIFTOP определяет операцию устройства сдвига. Поле DATA определяет 8-разрядное непосредственное значение сдвига. Для операции устройства сдвига, требующей двух 6-разрядных чисел (значение сдвига и значение длины), поле DATAEX добавляет 4 старших разряда к полю DATA, образуя 12-разрядное непосредственное значение. Шесть младших разрядов являются значением сдвига, шесть старших - значением длины. Если определен доступ к памяти, то D выбирает тип доступа (чтение или запись). G выбирает память данных или память программы. DREG определяет регистр регистрового файла. I определяет индексный регистр I, который поет-модифицируется и обновляется значением регистра М, определяемым полем М. Поле COMPUTE определяет вычислительную операцию, выполняемую параллельно с доступом к данным. Если в команде не определено никакой операции вычисления, то это поле NOR. Модификация индексного регистра, необязательное условие, необязательная операция вычисления.

Синтаксис:

IF условие вычисление, MODIFY

(Ia,Mb) (Ic,Md)

Функция:

Обновление определенного регистра I значением определенного регистра М. Если операция вычисления определена, она выполняется параллельно с доступом к данным. Если определено условие, то оно влияет на выполнение всей команды. Замечание: см. раздел 4.4.1 "Ограничения на передачу данных с использованием регистров DAG" в главе 4 Передача данных. Примеры: IF NOT FLAG2_IN R4=R6*R12 (SUF), MODIFY (110,M8); IF NOT LCE MODIFY (13,Ml);

Код операции: (с доступом к данным)


47 46 45 44 43 42 41 40 39 38 37 36 35 34 33 32 31 30 29 28 27 26 25 24 23

000 00100
G COND I М

22 21 20 19 18 17 16 15 14 13 1211 10 9 8 7 6 5 4 3 2 1 0


COMPUTE

COND определяет условие для проверки. Если в команде не определено никакого условия, то COND является условием TRUE, и команда выполняется всегда. G выбирает DAG1 или DAG2.1 определяет индексный регистр, М - регистр модификации. Поле COMPUTE определяет вычислительную операцию, выполняемую параллельно с доступом к данным. Если в команде не определено никакой операции вычисления, то это поле NOР.

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


Прямой (или относительно PC) переход/вызов, необязательное условие

Функция:

Переход или вызов по определенному адресу или по адресу относительно PC. Адрес относительно PC - это 24-разрядное число в виде двоичного дополнения. Модификатор команды DB указывает, что переход задержанный; иначе - он не задержанный. Если модификатор прерывания цикла (LA) определен для перехода, то данные извлекаются из стеков цикла и стека PC при выполнении перехода. Модификатор LA должен использоваться только в случае, если переход выполняется за границу цикла. Если цикла нет или адрес перехода находится внутри цикла, то модификатор LA не должен использоваться.

Модификатор очистки прерывания (CI) команды JUMP позволяет повторно использовать прерывание во время его обработки. Обычно ADSP-2106x игнорирует и не фиксирует прерывание, которое происходит повторно, когда программа его обработки уже выполняется. Команда JUMP (CI) должна размещаться внутри программы обработки прерывания. JUMP (CI) очищает состояние текущего прерывания без выхода из программы обработки прерывания, сводя программу обработки прерывания к стандартной подпрограмме - это позволяет прерыванию произойти снова в результате какого-либо события или задачи в системе ADSP-2106x. Команда JUMP (CI) сводит программу обработки прерывания к стандартной подпрограмме, обнуляя соответствующий бит в регистре фиксирования прерывания (IRPTL) и регистре указателя маски прерывания (IMASKP). Затем ADSP-2106x позволяет прерыванию произойти снова. При возвращении из подпрограммы, в которую была сведена программа обработки прерывания командой JUMP (CI), должен использоваться модификатор (LR) команды RTS (в случае, если прерывание поступает в течение двух последних команд цикла).

Примеры:

IF AV JUMP (PC, 0X00А4);

CALL init (DB); (init - это программная метка)

JUMP (PC,2) (DB,CI); (очистка текущего прерывания

для повторного использования)

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


47 46 45 44 43 42 41 40 39 38 37 36 35 34 33 32 31 30 29 28 27 26 25 24

000 00110 в А COND
J
CI

23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 V 6 5 4 3 2 1 0









ADDR












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


47 46 45 44 43 42 41 40 39 38 37 36 35 34 33 32 31 30 29 28 27 26 25 24

000 00111 в А COND
J
CI

23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0









RELADDR












COND определяет условие для проверки. Если в команде не определено никакого условия, то COND является условием TRUE, и команда выполняется всегда. В выбирает тип перехода - переход или вызов. J определяет, задержан переход или нет. Поле адреса ADDR определяет 24-разрядный адрес памяти программы. RELADDR - это 24-разрядное число в виде двоичного дополнения, которое прибавляется к текущему значению PC для генерации адреса перехода. Бит А активизирует прерывание цикла. CI активизирует очистку прерывания. (Для вызовов CI и А игнорируются)

Косвенный (или относительно PC) переход/вызов, необязательное условие, необязательная операция вычисления

Функция:

Переход или вызов по адресу, определяемому пред-модифицированным значением регистра I, или по адресу относительно PC. Адрес относительно PC - это 6-разрядное число в виде двоичного дополнения. Если регистр I определен, то он модифицируется определенным значением регистра М для генерации адреса перехода. На содержимое регистра I операция модификации не влияет.

Переход или вызов выполняется, если заданное условие верно. Если операция вычисления определена без ELSE, то она выполняется параллельно с вызовом или переходом. Если операция вычисления определена с ELSE, то она выполняется, только если заданное условие ложно. Заметим, что условие должно быть задано, если определена фраза ELSE вычисление.

Переход или вызов по определенному адресу или адресу относительно PC. Адрес относительно PC - это 24-разрядное число в виде двоичного дополнения. Модификатор команды DB указывает, что переход задержанный; иначе - он не задержанный. Если модификатор прерывания цикла (LA) определен для перехода, то данные извлекаются из стеков цикла и стека PC при выполнении перехода. Модификатор LA должен использоваться только в случае, если переход выполняется за границу цикла. Если цикла нет или адрес перехода находится внутри цикла, то модификатор LA не должен использоваться.

Модификатор очистки прерывания (CI) команды JUMP позволяет повторно использовать прерывание во время его обработки. Обычно ADSP-2106x игнорирует и не фиксирует прерывание, которое происходит повторно, когда программа его обработки уже выполняется. Команда JUMP (CI) должна размещаться внутри программы обработки прерывания. JUMP (CI) очищает состояние текущего прерывания без выхода из программы обработки прерывания, сводя программу обработки прерывания к стандартной подпрограмме - это позволяет прерыванию произойти снова в результате какого-либо события или задачи в системе ADSP-2106x. Команда JUMP (CI) сводит программу обработки прерывания к стандартной подпрограмме, обнуляя соответствующий бит в регистре фиксирования прерывания (IRPTL) и регистре указателя маски прерывания (IMASKP). Затем ADSP-2106x позволяет прерыванию произойти снова. При возвращении из подпрограммы, в которую была сведена программа обработки прерывания командой JUMP (CI), должен использоваться модификатор (LR) команды RTS (в случае, если прерывание поступает в течение двух последних команд цикла). (См. команду типа 11, возвращение из подпрограммы)

Примеры:

JUMP (M8,112), R6=R6-1; IF EQ CALL (PC,17), ELSE R6=R6-1;

Код операции: (для косвенного перехода)


47 46 45 44 43 42 41 40 39 38 37 36 35 34 33 32 31 30 29 28 27 26 25 24 23

000 01000 в А COND PMI РММ J Е CI

22 21 20 19 18 17 16 15 14 13 1211 10 9 8 7 6 5 4 3 2 10


COMPUTE

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


47 46 45 44 43 42 41 40 39 38 37 36 35 34 33 32 31 30 29 28 27 26 25 24 23

000 01001 в А COND RELADDR J Е CI

22 21 20 19 18 17 16 15 14 13 1211 10 9 8 7 6 5 4 3 2 10


COMPUTE

COND определяет условие для проверки. Если условие в команде не определено, то COND является условием TRUE, и команда выполняется всегда. Е определяет, используется или нет фраза ELSE. В выбирает тип перехода - переход или вызов. J определяет задержан переход или нет. Бит А активизирует прерывание цикла. CI активизирует очистку прерывания. (Для вызовов CI и А игнорируются) RELADDR - это 6-разрядное число в виде двоичного дополнения, которое прибавляется к текущему значению PC для генерации адреса перехода. PMI выбирает регистр I для косвенного перехода. Регистр I пред-модифицируется, но не обновляется значением регистра М, который выбирается полем РММ. Поле COMPUTE определяет вычислительную операцию, выполняемую параллельно с доступом к данным. Если в команде не определено никакой операции вычисления, то это поле NOР.

Косвенный (или относительно PC) переход и необязательная операция вычисления с передачей данных между памятью данных и регистровым файлом

Функция:

Условный переход по адресу, определяемому пред модифицированным значением регистра I, или по адресу относительно PC и необязательная операция вычисления параллельно с пересылкой данных между памятью данных и регистровым файлом. В этой команде условие IF и ключевое слово ELSE должны обязательно использоваться. Если заданное условие верно, то выполняется переход. Если заданное условие ложно, то операция вычисления и передача из (в) памяти данных выполняются параллельно. В этой команде необязательна только операция вычисления.

Для перехода адрес относительно PC - это 6-разрядное число в виде двоичного дополнения. Если регистр I определен (1с), он модифицируется значением определенного регистра М (Md) для генерации адреса перехода. Операция модификации не влияет на содержимое регистра I. Заметим, что модификаторы команды задержанного перехода (DB), прерывания цикла (LA) и очистки прерывания не разрешены в этой команде.

Для доступа к памяти данных адрес обеспечивается регистром I (la). Значение регистра I поет-модифицируется значением определенного регистра М и обновляется модифицированным значением. Адресация с пред-модификацией для такого доступа к памяти данных запрещена.

Примеры: IF TF JUMP (M8,18), ELSE R6=DM (16,Ml);

IF NE JUMP (PC,0X20), ELSE F12=FLOAT RIO BY R3, R6=DM (115,MO);

Код операции: (для косвенного перехода)


47 46 45 44 43 42 41 40 39 38 37 36 35 34 33 32 31 30 29 28 27 26 25 24 23

110 D DMI DMM COND PMI РММ DREG

22 21 20 19 18 17 16 15 14 13 1211 10 9 8 7 6 5 4 3 2 10


Код операции: (с переходом относительно PC)


47 46 45 44 43 42 41 40 39 38 37 36 35 34 33 32 31 30 29 28 27 26 25 24 23

111 D DMI DMM COND RELADDR DREG

22 21 20 19 18 17 16 15 14 13 1211 10 9 8 7 6 5 4 3 2 10


COMPUTE

COND определяет условие для проверки. PMI определяет регистр I для команды косвенного перехода. Регистр I пред-модифицируется, но не обновляется значением регистра М, который выбирается полем РММ. RELADDR - это 6-разрядное число в виде двоичного дополнения, которое прибавляется к текущему значению PC для генерации адреса перехода. D выбирает тип доступа к памяти данных (чтение и запись). DREG определяет регистр

Если Вам нужна помощь с академической работой (курсовая, контрольная, диплом, реферат и т.д.), обратитесь к нашим специалистам. Более 90000 специалистов готовы Вам помочь.
Бесплатные корректировки и доработки. Бесплатная оценка стоимости работы.

Поможем написать работу на аналогичную тему

Получить выполненную работу или консультацию специалиста по вашему учебному проекту
Нужна помощь в написании работы?
Мы - биржа профессиональных авторов (преподавателей и доцентов вузов). Пишем статьи РИНЦ, ВАК, Scopus. Помогаем в публикации. Правки вносим бесплатно.

Похожие рефераты: