Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Глава 15. Способы адресации операндов.doc
Скачиваний:
2
Добавлен:
01.07.2025
Размер:
129 Кб
Скачать
☆

15.3. Регистровая адресация

Регистровая адресация напоминает прямую адресацию. Различие состоит в том, что вторая часть кода исполнительного адреса в команде указывает не на ячейку оперативной памяти, а на регистр общего назначения R (рис. 15.3). Размер поля R зависит от количества регистров общего назначения.

Основными преимуществами регистровой адресации являются: корот­кое поле R в команде и быстрое формирование исполнительного адреса операнда.

Рис. 15.3. Регистровая адресация

15.4. Косвенная адресация

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

15.5. Косвенная адресация через память

Пример формирования исполнительного адреса операнда приведен на рис. 15.4.

Рис. 15.4. Косвенная адресация

Недостатком косвенной адресации через память является необходимость в двукратном об­ращении к оперативной памяти: сначала для извлечения исполнительного адреса операнда, а затем для обраще­ния к операнду. Сверх того задействуется лишняя ячейка оперативной памяти для хранения адреса операнда.

В современных архитектурах процессоров косвенная адресация используется редко.

15.6. Косвенная регистровая адресация

И сполнительный адрес операнда хранится в регистре общего назначения R, соответственно, адресное поле команды указывает не на ячейку оперативной памяти, а на регистр общего назначения R (рис. 15.5).

Рис. 15.5. Косвенная регистровая адресация

Косвенная регистровая адресация применяется весьма широко.

15.7. Индексная и базовая адресации

Индексация и базовая адресация очень похожи. В самом общем случае исполнительный адрес операнда формируется в результате суммирования содержимого поля смещения команды с содержимым одного или двух регистров общего назначения.

В поле «смещение» содержится константа, смысл которой в разных вариантах адресаций может меняться. Например, базовый адрес находится в регистре общего назначения процессора, а в поле «смещение» указывается смещение относительно этого адре­са. В некоторых архитектурах предусмотрены специальные регистры, например базовый или индексный. Использование таких регистров предполагается по умолчанию, поэтому адресная часть команды содержит только поле «смещение». Если же составляющая адреса может располагаться в произвольном регистре общего назначения, то для указания конкретного регистра в код исполнительного адреса команды включается одно или два поля с номерами регистров общего назначения (например, поля Ri и Rk). В наиболее общем случае адресация со смещением подразу­мевает наличие двух адресов регистров и смещения.

В рамках адресации со смещением имеется еще один вариант, при котором исполнительный адрес вычисляется не суммированием, а конкатенацией (присоединением) составляющих адреса. Здесь одна составляющая представляет собой старшую часть адреса, а вторая — младшую.

Пример формирования исполнительного адреса приведен на рис. 15.6.

Рис. 15.6. Формирование исполнительного адреса в случае индексной или базовой адресации

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

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