Характеристика системи команд процесора
Система команд - це набір допустимих для даного процесора керуючих кодів і способів адресації даних. Система команд жорстко пов'язана з конкретним типом процесора, оскільки визначається апаратною структурою блоку дешіфраціі команд, і звичайно не має переносимість на інші типи процесорів (хоча може мати місце сумісність "знизу-вгору" в рамках серії процесорів, як, наприклад, в серії < strong> i80x86 ). rn З фізичної точки зору код команди нічим не відрізняється від звичайних даних у двійковому коді, розміщених в пам'яті обчислювача. Конкретний двійкові код сприймається і обробляється процесором як команда в тому випадку, коли він потрапляє в процесор у фазі читання коду команди. rn З логічної точки зору в двійковому коді команди існують групи розрядів - поля - з різним функціональним призначенням (мал. 3.3). rn rn Рис. 3.3 Типова структура формату команди: rn 1 - поле коду операції (КОП) об'ємом 1 або 2 байтів; 2 - поле адресній частині команди (Ач) обсягом від 1 до 4 байт. rn На ріс.3.3 показані два основних поля в форматі команди: rn КОП - код операції - двійкові код, однозначно вказує процесору на виконання конкретних дій (пересилання, складання і т.п.), і визначає при цьому форму завдання адрес операндів; rn Ач - адресна частина - двійкове число, яке може представляти собою адреса (адреса) операндів, значення операндів, адреса наступної команди (адреса переходу, передачі керування). Отже, формат команди - це сукупність таких її характеристик, як кількість, розмір і призначення полів. rn Мова програмування, максимально наближений до системи команд конкретного мікропроцесора - це Асемблер. У цій мові коду кожної команди МП поставлена у відповідність певна мнемоніка - короткий буквене назва команди, наприклад: rn Пересилання даних - MOV (від англ. move ) rn Додавання - ADD rn Перехід по програмі - JMP (від англ. jump ) і т.д. rn (!) Вспомнить приклади команд з лабораторних робіт rn Для програміста система команд представляється як мінімально необхідний набір команд для реалізації обчислень і управління ходом обчислювального процесу. У систему команд традиційно входять такі групи: rn пересилання даних (регістр-регістр, регістр-пам'ять, пам'ять-регістр , специфічні команди типу пам'ять - пам'ять); всі команди пересилання виконують, по суті, копіювання даних з комірки-джерела в комірку-приймач; rn арифметичні операції (+, -, *,:); rn логічні операції ( and, or, xor, not ) та операції зсуву; rn введення-виведення - специфічні команди для передачі даних між процесором і пристроями вводу-виводу, розміщеними в адресний простір вводу-виводу; < /p> rn передача управління - при виконанні такої команди процесор записує в лічильник команд PC адреса наступної команди, взятий з адресної частини поточної команди; rn спеціальні - останов, скидання, управління переривання, управління режимом зниженого енергоспоживання і т.п. rn Спосіб адресації - це спосіб отримання процесором адреси операндів або переходу на підставі інформації з адресної частини команди . Розрізняють наступні основні способи адресації: rn пряма - адреса операндів або переходу міститься в Ач команди; rn безпосередня - в Ач команди міститься значення операндів; rn Реєстрова - в коді команди міститься вказівка на один або два регістра процесора, що є джерелами операндів або приймачем результату; rn непряма Реєстрова - в коді команди міститься вказівка на будь-який регістр процесора, вміст якого при виконанні команди інтерпретується процесором як адреса комірки пам'яті, яка містить операндів; rn непряма базова (іноді - Індексна) - адреса операндів формується (обчислюється) процесором в ході виконання команди як сума вмісту одного з регістрів і зміщення ( числа), що задаються в команді, або як сума вмісту двох регістрів. Таким чином, базова або Індексна форми адресації також є різновидом непрямої адресації. rn Регістри, які можна використовувати для реалізації непрямої адресації, часто називають вказівними регістр: в самом деле, вони як би "вказують" на ту комірку пам'яті, в якій міститься операндів. Використання непрямої адресації більш переважно, оскільки такий підхід дозволяє створювати універсальні, легко перенастраіваемие (використовується термін «перенесення»), і позиційне незалежні програми. Застосування прямої адресації "прив'язує" програму до конкретних комірок пам'яті, і при цьому різко знижується можливість її використання в різних проектах. Найважливіша особливість непрямої адресації полягає в тому, що адреса операндів повинен формуватися в процесі виконання програми (у той час, як у випадку використання прямої адресації адреси всіх операндів повинні бути визначені і зазначені при написання тексту програми). < /p> rn Реалізація основних способів адресації схематично показано на мал. 3.4. rn (!) Вспомнить приклади команд для різних способів адресації з лабораторних робіт rn Різновидом непрямої адресації є стековая адресація з використанням вмісту регістра SP . При цьому в процесі доступу до даних виконується автоуменьшеніе або автоувеліченіе вмісту регістра SP . Докладніше стековая адресація буде розглянута далі. rn Для забезпечення переносимості програм також використовують відносну адресація в командах передачі управління. При цьому в адресній частині команди міститься не абсолютний адреса переходу, а тільки зсув в байтах від поточного значення лічильника команд до адреси потрібної команди. Повна адреса переходу обчислюється процесором в ході виконання команди. Застосування відносної адресації дозволяє зменшити обсяг програми. rn rn Рис. 3.4. Схеми реалізації основних способів адресації даних
|