Федеральне агентство з освіти
Пензенський державний університет
Кафедра "Інформаційної безпеки систем і технологій"
Реферат на тему
"Система команд. Структура слова команд.
Синтаксис команд. Групи команд "
Дисципліна: ЦіМПТ
Група:
Студент:
Пенза 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 (тобто DAG 1 або DAG 2), що і la / Mb або Ic / Md.
Приклади:
R 6 = R 3 - R 11, DM (IO, M 1) = 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 = ureg 2;
Функція:
Передача даних з одного універсального регістра в інший. Якщо операція обчислення визначена, вона виконується паралельно з доступом до даних. Якщо умова визначено, то воно впливає на виконання всієї команди.
Приклади:
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 |