Стековая организация памяти

Рис. 3.1 Структура команд

а – четырехадресная, б – трехадресная, в – двухадресная, г – одноадресная.

В общем случае адресная часть должна содержать четыре адреса или адресных кода (рис. 3.1 а). Адреса А1 и А2 – адреса двух операндов, участвующих в операции, А3 – адрес ячейки, куда помещается результат операции, А4 – адрес ячейки, содержащей следующую команду. Тогда реализацию операции сложения можно изобразить как

А3 = А1 + А2.

Такой порядок выборки называют принудительным, он устарел и в настоящее время не применяется. Учитывая то, что в программе все команды выполняются последовательно, то это означает, что, если выполнялась команда, адрес которой содержался в ячейке к, то адрес следующей команды будет в ячейке к + 1. Такой порядок выборки команд называют естественным. Он нарушается только специальными командами перехода. Поэтому в трехадресной команде, как видно из рис.3.1 б, адрес следующей команды отсутствует. Он «по умолчанию» принимается следующим после адреса предыдущей команды. Этот метод называют косвенной адресацией. Следует иметь в виду, что адреса всех команд содержатся в специальном регистре – счетчике команд, куда они все предварительно заносятся. Характер реализации операции в трехадресной команде такой же, как и в четырехадресной.

В двухадресной команде кроме отсутствия адреса следующей команды, еще отсутствует и адрес результата (рис. 3.1 в). В этом случае результат заносится по месту одного из операндов (обычно первого). Характер реализации операции с такой командой выглядит следующим образом

А1 = А1 + А2.

В одноадресной команде (рис.3.1 г) подразумеваемые адреса имеют не только результат операции, но и один из операндов. Здесь указывается адрес только одного операнда, адресом второго операнда является содержимое триггерного регистра компьютера. Схема реализации операций при одноадресной команде выглядит следующим образом

Рг = Рг + А1.

Здесь Рг обозначает триггерный регистр. Естественно, что при выборе той или иной структуры команды, стремились к сокращению размера ячейки памяти, выделяемой для команды. Исходя из того, что команда представляется в двоичном коде, то разрядность ячейки будет определяться разрядностью кода операции и адресов. Разрядность кода операции зависит от общего количества различных операций. Если таковых, например, N, и они определяются как ,

где m – количество двоичных разрядов ячейки, то отсюда это количество определится как

m = logN.

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

Известна еще одна разновидность адресации – с т е к о в а я. С т е к – это неявный способ адресации, когда информация хранится в виде последовательности, в которой доступен только последний элемент. Это безадресная память. В стековой памяти все ячейки образуют одномерный массив (располагаются друг за другом). У стека один вход он же и выход. Схема организации стековой памяти приведена на рис.3.2.

В состав стековой памяти входит указатель стека (УС). При записи нового данного счетчик увеличивается на заданную величину, а при считывании – уменьшается на постоянную величину. При работе со стеком реализуется принцип: первым поступил – последним обслуживается.

N-1
:
 
 


вых 0 N-1

Рис. 3.2 Стековая организация памяти


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: