Базово-індексний режим
У цьому режимі адреса операнда утворюється складанням два
або, рідше, більшої кількості регістрів і, можливо, ще і адресного
зсуву. Такий режим може використовуватися для адресації масивів — один
регістр містить базову адресу масиву, другу, — індекс, звідки і назва.
Інколи значення індексного регістра умножається на розмір операнда, інколи
— ні.
На перший погляд, ортогональна архітектура повинна випробовувати певні
складнощі з-кодуванням такої адресації: для цього потрібно два регістрові
поля, а більшість останніх режимів задовольняються одним регістром.
Проте багато ортогональної архітектури, наприклад VAX, Мс680хо, SPARC
реалізують цей режим, хай інколи і з обмеженнями.
Індексний режим адресації VAX
Біля
VAX за операндом, вказуючим індексний режим адресації і індексний регістр,
слідує ще один байт, що кодує режим адресації і регістр,
використовувані для обчислення базової адреси (мал. 2.12). Ідея вирішити
багатократну вказівку індексного регістра в одному операнді, на жаль,
не реалізована.
Індексний режим адресації в системі
команд SPARC
SPARC дозволяє використовувати для обчислення адреси в командах LD, зт і
JMPL як суму двох регістрів, так і суму регістра і 13-розрядного зсуву.
Таким чином, ці команди реалізують або непрямо-регістровий режим (якщо
використовується зсув і воно дорівнює 0), або непрямо-регістровий режим
із зсувом, або базово-індексний режим без зсуву. Це, звичайно,
бідніше, ніж біля CISC-процессоров, але жити з таким набором цілком можна.

Мал. 2.12. Індексний режим адресації VAX
Немало сучасних процесорів, втім, пропонують програмістові реалізувати
такий режим за допомогою декількох команд і з використанням проміжного
регістра, в який слід помістити суму базового і індексного регістрів.
|