Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекцii_ALL.doc
Скачиваний:
0
Добавлен:
01.04.2025
Размер:
3.55 Mб
Скачать

9.1. Способи адресації

Дотепер ми не розповідали про те, як інтерпретуються біти адресного поля для знаходження операнда. Один з можливих варіантів полягає в тому, що вони містять адресу операнда. Крім величезного поля, необхідного для визначення повної адреси пам'яті, даний метод має ще одне обмеження: ця адреса повинна визначатися під час компіляції. Існують і інші можливості, які забезпечують коротші специфікації, а також можуть визначати адреси динамічно. У наступних розділах ми розглянемо деякі з цих форм, які називаються способами адресації.

9.2. Безпосередня адресація

Найпростіший спосіб визначення операнда — помістити в адресній частині сам операнд, а не адресу операнда або яку-небудь іншу інформацію, що описує, де знаходиться операнд. Такий операнд називається безпосереднім операндом, оскільки він автоматично викликається з пам'яті одночасно з командою; отже, він відразу безпосередньо стає доступним. Один з варіантів команди з безпосередньою адресою для завантаження у регістр R1 константи 4 показаний на рис. 9.1.

Рис. 9.1 - Команда з безпосередньою адресою для завантаження константи 4 в регістр 1

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

9.3. Пряма адресація

Наступний спосіб визначення операнда – просто дати його повний адрес. Такий спосіб називається прямою адресацією. Як і непряма адресація, пряма адресація має деяке обмеження: команда завжди має мати доступ тільки до одного і того ж адресу пам’яті. Тобто значення може змінюватися, а адрес – ні. Таким чином, пряма адресація може використовуватися тільки для доступу до глобальних призначень, адреса яких відома під час компіляції. Багато програм містять глобальні призначення, тому цей спосіб широко використовується. Таким чином, комп’ютер визначає які адреса непрямі, а які прямі, ми обговоримо пізніше.

9.4. Регістрова адресація

Регістрова адресація по суті схожа до прямої адресації, тільки в даному випадку замість комірки пам’яті визначається регістр. Оскільки регістри дуже важливі, цей спосіб адресації є поширеним на більшість комп’ютерів. Багато компіляторів доходять до великих розмірів, щоб визначити до яких змінних доступ буде найчастіше звертатись(наприклад індекс циклу), і поміщають ці змінні в регістри.

Такий спосіб адресації називають регістровою адресацією. В архітектурах з загрузкою і запам’ятовуванням, наприклад UltraSPARC, практично всі команди використовують виключно цей спосіб адресації. Він не використовується тільки в тому випадку, коли операнд переміщується з пам’яті в регістр (команда LOAD) чи з регістра в пам’ять (команда STORE). Навіть в цих командах один із операндів являється регістром – туди відправляється слово з пам’яті або звідти переміщається слово в пам’ять.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]