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

[ виправити ] текст може містити помилки, будь ласка перевіряйте перш ніж використовувати.

скачати

Федеральне агентство з освіти

Пензенський державний університет

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

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

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

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

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

Група:

Студент:

Пенза 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

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 вибирає DAG 1 або DAG 2.1 визначає індексний регістр, М - регістр модифікації. Поле COMPUTE визначає обчислювальну операцію, виконувану паралельно з доступом до даних. Якщо в команді не визначено ніякої операції обчислення, то це поле NO Р.

Управління послідовністю виконання програми

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

Функція:

Перехід чи виклик за певною адресою або за адресою щодо PC. Адреса щодо PC - це 24-розрядне число у вигляді двійкового доповнення. Модифікатор команди DB вказує, що перехід затриманий; інакше - він не затриманий. Якщо модифікатор переривання циклу (LA) визначений для переходу, то дані витягуються з стеків циклу і стека PC при виконанні переходу. Модифікатор LA повинен використовуватися тільки у випадку, якщо перехід виконується за кордон циклу. Якщо циклу немає або адреса переходу знаходиться всередині циклу, то модифікатор LA не повинен використовуватися.

Модифікатор очищення переривання (CI) команди JUMP дозволяє повторно використовувати переривання під час його обробки. Зазвичай ADSP -2106 x ігнорує і не фіксує переривання, яке відбувається повторно, коли програма його обробки вже виконується. Команда JUMP (CI) повинна розміщуватися всередині програми обробки переривання. JUMP (CI) очищає стан поточного переривання без виходу з програми обробки переривання, зводячи програму обробки переривання до стандартної підпрограмі - це дозволяє переривання статися знову в результаті якої-небудь події або завдання в системі ADSP -2106 x. Команда JUMP (CI) зводить програму обробки переривання до стандартної підпрограмі, обнулити відповідний біт у регістрі фіксування переривання (IRPTL) і регістрі покажчика маски переривання (IMASKP). Потім ADSP -2106 x дозволяє переривання статися знову. При поверненні з підпрограми, в яку була зведена програма обробки переривання командою 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 -2106 x ігнорує і не фіксує переривання, яке відбувається повторно, коли програма його обробки вже виконується. Команда JUMP (CI) повинна розміщуватися всередині програми обробки переривання. JUMP (CI) очищає стан поточного переривання без виходу з програми обробки переривання, зводячи програму обробки переривання до стандартної підпрограмі - це дозволяє переривання статися знову в результаті якої-небудь події або завдання в системі ADSP -2106 x. Команда JUMP (CI) зводить програму обробки переривання до стандартної підпрограмі, обнулити відповідний біт у регістрі фіксування переривання (IRPTL) і регістрі покажчика маски переривання (IMASKP). Потім ADSP -2106 x дозволяє переривання статися знову. При поверненні з підпрограми, в яку була зведена програма обробки переривання командою 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 лютого 1910

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 лютого 1910

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 лютого 1910

Код операції: переходом щодо 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 лютого 1910

COMPUTE

COND визначає умову для перевірки. PMI визначає регістр I для команди непрямого переходу. Регістр I перед-модифікується, але не оновлюється значенням регістру М, який вибирається полем РММ. RELADDR - це 6-розрядне число у вигляді двійкового доповнення, яке додається до поточного значення PC для генерації адреси переходу. D вибирає тип доступу до пам'яті даних (читання і запис). DREG визначає регістр реєстрового файлу. DMI визначає регістр I, який співає-модифікується і оновлюється значенням регістру М, яка визначається полем DMM. Поле COMPUTE визначає обчислювальну операцію, виконувану паралельно з доступом до даних. Якщо в команді не визначено ніякої операції обчислення, то це поле NOR

Повернення з підпрограми або переривання, необов'язкова умова, необов'язкова операція обчислення

Функція:

Повернення з підпрограми (RTS) або повернення з програми обробки переривання (RTI). Модифікатор команди DB вказує, що перехід затриманий; інакше - він незатриманих.

Команда повернення з підпрограми змушує процесор виконати перехід за адресою, збереженому у вершині стека лічильника команд. Різниця між RTS і RTI полягає в тому, що команда RTI не тільки витягує адреса повернення з стека лічильника команд, але й також:

1) витягує вміст стека стану, якщо туди було поміщено вміст регістрів стану ASTAT і MODE 1 (якщо було переривання IRQ, _ 0, переривання по таймеру або векторне переривання VIRPT);

2) обнуляє відповідний біт у регістрах фіксування переривання (IRPTL) і покажчика маски переривання (IMASKP).

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

Якщо незатриманих виклик використовується як одна з трьох останніх команд в циклі, то з командою RTS повинен застосовуватися модифікатор повторного входу в цикл (LR). Команда RTS (LR) гарантує правильний повторний вхід в цикл. Наприклад, у циклі, організованому за лічильником, умови завершення циклу перевіряється за допомогою зменшення значення лічильника поточного циклу (CURLCNTR) протягом виконання двох останніх команд циклу. Команда RTS (LR) гарантує правильний повторний вхід до циклу, запобігаючи декремент лічильника циклів (двічі для однієї і тієї ж ітерації циклу).

При поверненні з підпрограми, в яку була зведена програма обробки переривання командою JUMP (CI), повинен використовуватися модифікатор (LR) команди RTS (у разі, якщо переривання надходить протягом двох останніх команд циклу).

Приклади: RTI, R6 = R5 XOR R1; IF NOT GT RTS (DB); IF SZ RTS, ELSE R0 = LSHIFT Rl BY R15.

Код операції: (повернення з підпрограми)

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

01010



COND


J

Е

L R


22 21 20 19 18 17 16 15 14 13 1211 10 9 8 7 6 5 4 3 лютого 1910

COMPUTE

Код операції: (повернення з програми обробки переривання)

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

01011



COND


J

Е



22 21 20 19 18 17 16 15 14 13 1211 10 9 8 7 6 5 4 3 лютого 1910

COMPUTE

COND визначає умову для перевірки. Якщо в команді ніякого умови не визначено, то COND є умовою TRUE, і повернення виконується завжди. J визначає, затриманий повернення чи ні. Е визначає, використовується чи ні фраза ELSE. Поле COMPUTE визначає виконувану обчислювальну операцію. Якщо в команді не визначено ніякої операції обчислення, то це поле NO P. LR визначає, призначений чи ні модифікатор повторного входу в цикл.

Завантаження лічильника циклу, команда DO UNTIL LCE

Функція:

Ініціалізує організований за лічильником програмний цикл. Лічильник циклу LCNTR завантажується 16-розрядним безпосереднім значенням даних чи значенням з універсального регістру. Початковий адресу циклу поміщається в стек PC. Адреса закінчення циклу і умова закінчення LCE поміщаються в стек адреси циклу. Кінцева адреса може бути міткою для абсолютної 24-розрядної адреси пам'яті програми або 24-розрядним адресою щодо PC у вигляді двійкового доповнення. LCNTR поміщається в стек лічильника циклу і стає значенням CURLCNTR. Цикл виконується до тих пір, поки вміст CURLCNTR не досягне нуля.

Приклади:

LCNTR = 100, DO fmax UNTIL LCE; (fmax - програмна мітка) LCNTR = R 12, DO (PC, 16) UNTIL LCE;

Код операції: (для завантаження лічильника циклу безпосереднім значенням даних)

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

01100

DATA

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

Код операції: (для завантаження лічильника циклу з універсального регістру)

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

01101

UREG


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

RELADDR

RELADDR визначає адресу кінця циклу по відношенню до адреси команди DO LOOP. (Абсолютний адресу теж допускається; він перетворюється в еквівалентний відносний адресу асемблером при кодуванні) Лічильник циклу (LCNTR) завантажується 16-розрядним значенням DATA або вмістом регістра, певним полем UREG.

<Addr 24> (PC, <reladdr 24>) UNTIL умова закінчення;

Функція:

Ініціалізує організований за лічильником програмний цикл. Початковий адресу циклу поміщається в стек PC. Адреса закінчення циклу і умова закінчення поміщаються в стек циклу. Кінцева адреса може бути міткою для абсолютної 24-розрядної адреси пам'яті програми або 24-розрядним адресою щодо PC у вигляді двійкового доповнення. Цикл повторюється до тих пір, поки не виконується вказана умова закінчення циклу.

Приклади:

DO end UNTIL FLAG IN; (end - програмна мітка) DO (PC, 7) UNTIL AC;

Код операції: (відносна адресація)

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

OHIO


TERM


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

RELADDR визначає адресу кінця циклу по відношенню до адреси команди DO LOOP. (Абсолютний адресу теж допускається; він перетворюється в еквівалентний відносний адресу асемблером при кодуванні) TERM визначає умова закінчення циклу.

Команди безпосередній пересилання даних

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

Функція:

Звернення між пам'яттю даних або пам'яттю програми і універсальним регістром при прямої адресації. Повна адреса пам'яті даних або пам'яті програми визначається у програмі. Адреси пам'яті даних 32-розрядні (від Про до 2 32 -1). Адреси пам'яті програми 24-розрядні (від 0 до 24 Лютого -1).

Приклади:

DM (temp) = MODE 1; (temp - програмна мітка) DMWAIT = PM (0x489060);

Код операції:

47 46 45 44 43 42 41 40 39 38 37 36 35 34 33 32

000

100

G

D

UREG

31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0

D вибирає тип звернення (запис або читання). G вибирає тип пам'яті (пам'ять даних або пам'ять програми). UREG визначає номер універсального регістру. ADDR містить безпосереднє значення адреси.

Пересилання даних між пам'яттю даних або пам'яттю програми і універсальним

Функція:

Звернення між пам'яттю даних або пам'яттю програми і універсальним регістром при непрямої адресації з використанням регістрів I. Регістр I перед-модифікується безпосереднім значенням, заданим в команді. Вміст регістра I не оновлюється. Модифікатори адреси пам'яті даних 32-розрядні (від 0 до 2 32 -1). Модифікатори адреси пам'яті програми 24-розрядні (від 0 до 24 Лютого -1). Зауваження:

Універсальний регістр (ureg) може знаходитися не в тому ж самому DAG (тобто

DAG 1 або DAG 2), що і la / Mb або Ic / Md.

Див розділ 4.4.1 "Обмеження на передачу даних з використанням регістрів DAG" в розділі 4 Передача даних.

Приклади:

DM (24,15) = TCOUNT; USTATl = PM (offs, 113);

("Offs" - визначена константа)

Код операції:

47 46 45 44 43 42 41 40 39 38 37 36 35 34 33 32

101

G

I

D

UREG

31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0

D вибирає тип доступу (запис або читання). G вибирає тип пам'яті (дані або програма). UREG визначає номер універсального регістру. Поле I визначає індексний регістр I. Поле DATA визначає значення модифікації для регістра I.

Прямий запис даних в пам'ять даних або пам'ять програми

Синтаксис:

DM (Ia, Mb) = <data 32>; PM (Ic, Md)

Функція:

Запис 32-розрядних даних в пам'ять даних або пам'ять програми при непрямої адресації. Дані розміщуються в старших 32 розрядах 40-розрядного слова пам'яті. Молодші 8 розрядів обнуляються. Регістр I співає-модифікується і оновлюється певним значенням регістру М. Зауваження:

Універсальний регістр (ureg) може знаходитися не в тому ж самому DAG (тобто DAG 1 або DAG 2), що і la / Mb або Ic / Md.

Приклади:

DM (I 4, M 0) = 19304;

РМ (114, Mil) = count; (count-константа, обумовлена ​​користувачем)

Код операції:

47 46 45 44 43 42 41 40 39 38 37 36 35 34 33 32

100

1

I

м

G


31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0

I вибирає індексний регістр I, М вибирає регістр модифікації М. G вибирає тип пам'яті (пам'ять даних або пам'ять програми). DATA визначає 32-розрядні дані.

Запис даних в універсальний регістр

Синтаксис:

ureg = <data 32>;

Функція:

Запис 32-розрядних даних в універсальний регістр. Якщо регістр 40-розрядний, дані розміщуються в старших 32 розрядах, а в 8 молодших записуються нулі.

Приклади:

IMASK = 0 xFFFC 0060;

M 15 = modl; (modi - константа, обумовлена ​​користувачем)

Код операції:

47 46 45 44 43 42 41 40 39 38 37 36 35 34 33 32

000

01111

UREG

31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0

DATA

UREG визначає номер універсального регістру. Поле DATA визначає значення даних.

Висновок

Набір команд процесорів сімейства ADSP-21000 забезпечує широкі можливості для їх програмування. Багатофункціональні команди дозволяють виконувати обчислення паралельно з передачею даних, а також одночасні операції помножувача і ALU. Практично кожна команда може бути виконана за один процесорний цикл. Алгебраїчний синтаксис, використовуваний асемблером сімейства ADSP-2106x, спрощує кодування і читаність. Зручний набір засобів розробки полегшує програмування.

Список використаних джерел

1. Остапенко О.Г., Лавлінскій С.І., Сушков А.В. та ін Цифрові процесори обробки сигналів. Довідник. М.: Радіо і зв'язок, 1994.264 с.

Додати в блог або на сайт

Цей текст може містити помилки.

Програмування, комп'ютери, інформатика і кібернетика | Реферат
98.7кб. | скачати


Схожі роботи:
Структура і набір команд процесора intel80X86
Система команд мікроконтролерів
Система команд конфігурування маршрутизаторів Cisco
Функціональна організація і система команд процесора
Характеристики робочих команд
Менеджмент проектних команд
Інтерпретатор команд MS DOS
Лексико граматична організація українських військових команд
Лексико-граматична організація українських військових команд
© Усі права захищені
написати до нас