|
||
98 Глава 2. Архитектура системы команд
|
||
|
||
каждого из операндов и результата задается в команде путем указания адреса соответствующей ячейки основной памяти или номера регистра процессора. Принципы использования информации из адресной части команды определяет система адресации. Система адресации задает число адресов в команде команды и принятые способы адресации.
Разрядности полей /?* и RCA рассчитываются по формулам:
А: =int(log2^); (2.3)
i*CA=int(log2WCA), (2.4)
где М — количество ячеек памяти, к которому можно обратиться с помощью г-го адреса; са — количество способов адресации (int означает округление в большую сторону до целого числа).
Количество адресов в команде
Для определения количества адресов, включаемых в адресную часть, будем использовать термин адресность. В «максимальном» варианте необходимо указать три компонента: адрес первого операнда, адрес второго операнда и адрес ячейки, куда заносится результат операции. В принципе может быть добавлен еще один адрес, указывающий место хранения следующей инструкции. В итоге имеет место четырехадресный формат команды (рис. 2.39). Такой формат поддерживался в ВМ EDVAC, разработанной в 1940-хгодах[116].
|
||
|
||
|
||
|
||
В фон-неймановских ВМ необходимость в четвертом адресе отпадает, поскольку команды располагаются в памяти в порядке их выполнения, и адрес очередной команды может быть получен за счет простого увеличения адреса текущей команды в счетчике команд. Это позволяет перейти к трехадресному формату команды (рис. 2.40). Требуется только добавить в систему команд ВМ команды, способные изменять порядок вычислений.
|
||
|
||
|
||
|
||
К сожалению, и в трехадресном формате длина команды может оказаться весьма большой. Так, если адрес ячейки основной памяти имеет длину 32 бита, а длина кода операции — 8 бит, то длина команды составит 104 бита (13 байт).
|
||
|
||
|
||
Форматы команд 99
|
||
|
||
Если по умолчанию взять в качестве адреса результата адрес одного из операндов (обычно второго), то можно обойтись без третьего адреса, и в итоге получаем двухадресный формат команды (рис. 2.41). Естественно, что в этом случае соответствующий операнд после выполнения операции теряется.
|
||
|
||
|
||
|
||
Команду можно еще более сократить, перейдя к одноадресному формату (рис. 2.42), что возможно при выделении определенного стандартного места для хранения первого операнда и результата.' Обычно для этой цели используется специальный регистр центрального процессора (ЦП), известный под названием аккумулятора, поскольку здесь аккумулируется результат.
|
||
|
||
|
||
|
||
Применение единственного регистра для хранения одного из операндов и результата является ограничивающим фактором, поэтому помимо аккумулятора часто используют и другие регистры ЦП. Так как число регистров в ЦП невелико, для указания одного из них в команде достаточно иметь сравнительно короткое адресное поле. Соответствующий формат носит название полутораадресного или регистрового формата (рис. 2.43).
|
||
|
||
|
||
|
||
Наконец, если для обоих операндов указать четко заданное местоположение, а также в случае команд, не требующих операнда, можно получить нульадресный формат команды (рис. 2-44). ...........
|
||
|
||
|
||
|
||