Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекции РАЗДЕЛ 2.docx
Скачиваний:
70
Добавлен:
18.11.2019
Размер:
3.01 Mб
Скачать

2.18.7. Относительная адресация

При относительной адресации (ОА) для получения исполнительного адреса операнда содержимое подполя команды складывается с содержимым счетчика команд (рис. 2.68). Таким образом, адресный код в команде представляет собой смещение относительно адреса текущей команды. Следует отметить, что в момент вычисления исполнительного адреса операнда в счетчике команд может уже быть сформирован адрес следующей команды, что нужно учитывать при выборе величины смещения. Обычно подполе трактуется как двоичное число в дополнительном коде.

Рис. 2.68. Относительная адресация

Адресация относительно счетчика команд базируется на свойстве локальности, выражающемся в том, что большая часть обращений происходит к ячейкам, расположенным в непосредственной близости от выполняемой команды. Это позволяет сэкономить на длине адресной части команды, поскольку разрядность подполя может быть небольшой. Главное достоинство данного способа адресации состоит в том, что он делает программу перемещаемой в памяти: независимо от текущего расположения программы в адресном пространстве взаимное положение команды и операнда остается неизменным, поэтому адресация операнда остается корректной.

Эффективность данного способа адресации можно описать выражениями:

, (2.17)

где – разрядность счетчика команд; – время сложения составляющих исполнительного адреса.

2.18.8. Базовая регистровая адресация

В случае базовой регистровой адресации (БРА) регистр, называемый базовым, содержит полноразрядный адрес, а подполе – смещение относительно этого адреса. Ссылка на базовый регистр может быть явной или неявной. В некоторых вычислительных машинах имеется специальный базовый регистр и его использование является неявным, то есть подполе R в команде отсутствует (рис. 2.69, а).

Более типичен случай, когда в роли базового регистра выступает один из регистров общего назначения (РОН), тогда его номер явно указывается в подполе R команды (рис. 2.69, б).

Базовую регистровую адресацию обычно используют для доступа к элементам массива, положение которого в памяти в процессе вычислений может меняться. В базовый регистр заносится начальный адрес массива, а адрес элемента массива указывается в подполе команды в виде смещения относительно начального адреса массива. Достоинство данного способа адресации в том, что смещение имеет меньшую длину, чем полный адрес, и это позволяет сократить длину адресного поля команды. Короткое смещение расширяется до полной длины исполнительного адреса путем добавления слева битов, совпадающих со значением знакового разряда смещения.

Рис. 2.69. Базовая регистровая адресация:

а – с базовым регистром; б – с использованием одного из РОН

Разрядность смещения и, соответственно, затраты оборудования определяются из условия , где – количество операндов i-ой команды.

Затраты времени составляют: .

2.18.9. Индексная адресация

При индексной адресации (ИА) подполе содержит адрес ячейки памяти, а регистр (указанный явно или неявно) – смещение относительно этого адреса. Этот способ адресации похож на базовую регистровую адресацию. Поскольку при индексной адресации в поле находится полноразрядный адрес ячейки памяти, играющий роль базы, длина этого поля больше, чем при базовой регистровой адресации. Тем не менее, вычисление исполнительного адреса операнда производится идентично (рис. 2.70).

Рис. 2.70. Индексная адресация:

а – с индексным регистром; б – с использование одного из РОН

Индексная адресация предоставляет удобный механизм для организации итеративных вычислений. Пусть, например, имеется массив чисел, расположенных в памяти последовательно, начиная с адреса N, и мы хотим увеличить на единицу все элементы данного массива. Для этого требуется извлечь каждое число из памяти, прибавить к нему 1 и вернуть обратно, а последовательность исполнительных адресов будет следующей: N, N+ 1, N+ 2 и т.д., вплоть до последней ячейки, занимаемой рассматриваемым массивом. Значение N берется из поля команды, а в выбранный регистр, называемый индексным регистром, сначала заносится 0. После каждой операции содержимое индексного регистра увеличивается на 1.

Так как это довольно типичный случай, в большинстве вычислительных машин увеличение или уменьшение содержимого индексного регистра до или после обращения к нему осуществляется автоматически как часть машинного цикла. Такой прием называется автоиндексированием. Если для индексной адресации используются специально выделенные регистры, автоиндексирование может производиться неявно и автоматически. При задействовании для хранения индексов регистров общего назначения необходимость операции автоиндексирования должна указываться в команде специальным битом.

Автоиндексирование с увеличением содержимого индексного регистра носит название автоинкрементной адресации и может быть описано следующим образом:

, (2.18)

где (R) – содержимое индексного регистра с адресом R.

В первом варианте увеличение содержимого индексного регистра происходит после формирования исполнительного адреса, и этот способ называется постинкрементным автоиндексированием. Во втором случае сначала производится увеличение содержимого индексного регистра, и уже новое значение используется для формирования исполнительного адресаЭтот способ называется преинкрементным автоиндексированием.

Автоиндексирование с уменьшением содержимого индексного регистра носит название автодекрементной адресации и может быть описано так:

. (2.19)

Здесь также возможны два варианта, отличающиеся последовательностью выполнения операций уменьшения содержимого индексного регистра и вычисления исполнительного адреса: постдекрементное автоиндексирование и предекрементное автоиндексирование.

Весьма полезным является еще один вариант индексной адресации – индексная адресация с масштабированием и смещением: содержимое индексного регистра умножается на масштабный коэффициент и суммируется с . Масштабный коэффициент может принимать значения 1, 2, 4 или 8, для чего в части команды выделяется дополнительное поле. Описанный способ адресации реализован, например, в микропроцессорах фирмы Intel.

Система команд многих вычислительных машин предоставляет возможность различным образом сочетать базовую и индексную адресации в качестве дополнительных способов адресации.