Способы адресации операндов в команде
Вопрос о том, каким образом в адресном поле команды может быть указано местоположение операндов, считается одним из центральных при разработке архитектуры ВМ. С точки зрения сокращения аппаратурных затрат очевидно стремление разработчиков уменьшить длину адресного поля при сохранении возможностей доступа ко всему адресному пространству. С другой стороны, способ задания адресов должен способствовать максимальному сближению конструктов языков программирования высокого уровня и машинных команд. Все это привело к тому, что в архитектуре системы команд любой ВМ предусмотрены различные способы адресации операндов.
Приступая к рассмотрению способов адресации, вначале определим понятия исполнительный и адресный код.
Исполнительным адресом операнда (Аисп) называется двоичный код номера ячейки памяти, служащей источником или приемником операнда. Этот код подается на адресные входы запоминающего устройства (ЗУ), и по нему происходит фактическое обращение к указанной ячейке. Если операнд хранится не в основной памяти, а в регистре процессора, его исполнительным адресом будет номер регистра.
Адресный код команды (Ак) – это двоичный код в адресном поле команды, из которого необходимо сформировать исполнительный адрес операнда.
В современных ВМ исполнительный адрес и адресный код, как правило, не совпадают, и для доступа к данным требуется соответствующее преобразование. Способ адресации – это способ формирования исполнительного адреса операнда по адресному коду команды. Способ адресации существенно влияет на параметры процесса обработки информации. Одни способы позволяют увеличить емкость адресуемой памяти без удлинения команды, но снижают скорость выполнения операции, другие – ускоряют операции над массивами данных, третьи – упрощают работу с подпрограммами и т.д. В сегодняшних ВМ обычно имеется возможность приложения нескольких различных способов адресации операндов к одной и той же операции.
Чтобы устройство управления вычислительной машины могло определить, какой именно способ адресации принят в данной команде, в разных ВМ используются различные приемы. Часто разным способам адресации соответствуют и разные коды операции. Другой подход – это добавление в состав команды специального поля способа адресации, содержимое которого определяет, какой из способов адресации должен быть применен. Иногда в команде имеется нескольких полей – по одному на каждый адрес. Отметим, что возможен также вариант, когда в команде вообще отсутствует адресная информация, то есть имеет место неявная адресация. При неявной адресации адресного поля либо просто нет, либо оно содержит не все необходимые адреса – отсутствующий адрес подразумевается кодом операции. Так, при исключении из команды адреса результата подразумевается, что результат помещается на место второго операнда. Неявная адресация применяется достаточно широко, поскольку позволяет сократить длину команды. Рассмотрим более подробно некоторые из способов адресации операндов.
Непосредственная адресация
Принепосредственной адресации (НА) в адресном поле команды вместо адреса содержится непосредственно сам операнд. Этот способ может применяться при выполнении арифметических операций, операций сравнения, а также для загрузки констант в регистры.
Когда операндом является число, оно обычно представляется в дополнительном коде. При записи в регистр, имеющий разрядность, превышающую длину непосредственного операнда, операнд размещается в младшей части регистра, а оставшиеся свободными позиции заполняются значением знакового бита операнда.
Помимо того, что в адресном поле могут быть указаны только константы, еще одним недостатком данного способа адресации является то, что размер непосредственного операнда ограничен длиной адресного поля команды, которое в большинстве случаев меньше длины машинного слова.
Регистровая адресация
Регистровая адресация (РА). Адресное поле инструкции указывает не на ячейку памяти, а на регистр процессора. Идентификатор регистра в дальнейшем будем обозначать буквой R. Обычно размер адресного поля в данном случае составляет три или четыре бита, что позволяет указать соответственно на один из 8 или 16 регистров общего назначения (РОН).
Двумя основными преимуществами регистровой адресации являются: короткое адресное поле в команде и исключение обращений к памяти. Малое число РОН позволяет сократить длину адресного поля команды.
Рис. 1.13. Регистровая адресация
Прямая адресация
При прямой адресации адресный код прямо указывает номер ячейки памяти, к которой производится обращение (рис. 1.14), т.е. адресный код совпадает с исполнительным адресом.
Рис. 1.14. Прямая адресация
При всей простоте использования способ имеет существенный недостаток – ограниченный размер адресного пространства.
Косвенная адресация
Одним из путей преодоления проблем свойственных прямой адресации является косвенная адресация. При этом способе содержимое адресного поля команды остается неизменным, в то время как косвенный адрес в процессе выполнения программы можно изменять.
При косвенной адресации в адресном поле команды указывается адрес ячейки (или номер РОН), в свою очередь, содержащей полноразрядный адрес операнда (рис.1.15). В качестве недостатка можно отметить необходимость в двукратном к памяти.
Рис. 1.15. Косвенная адресация
Кроме вышеперечисленных способов адресации существуют также индексная адресация, относительная индексная адресация, блочная адресация, стековая адресация и др. Частота использования различных способов адресации существенно зависит от типа АСК. Для машин со стековой архитектурой, основным способом адресации является стековая. Для ВМ с аккумуляторной архитектурой – прямая и непосредственная и т.д.
Дата добавления: 2015-07-18; просмотров: 1488;