[ Тематический план ] [ Кодирование команд] [ 1 ] [ 2 ]


Для конспекта

Формат команды

Формат команды – это структура команды, позволяющая распознать назначение отдельных ее полей.

Исходя из определения, команда должна содержать информацию о выполняемой операции, адресах операндов и адресе ячейки ЗУ для записи результата. Этому в наибольшей степени соответствует формат команды, содержащий поле кода операции и три адресных поля. Такая система кодирования команд называется трехадресной ( рис.1,в ).

Схема выполнения трехадресной команды имеет вид:

(А 1 )*(А 2 )->А 3 .

Здесь (А 1 ) и (А 2 ) – адреса ячеек ЗУ, в которых хранятся первый и второй операнды соответственно; * – знак обобщенной операции (например, сложение или умножение), задаваемой полем кода операции (КОп). Знак " -> " обозначает передачу результата операции в ячейку памяти с адресом А3.


Рис. 1. Системы кодирования команд

Для выполнения операции сложения операндов, находящихся по адресам a и b , с записью результата в ячейку c ( c = a + b ) требуется одна команда такого формата:

КОп А 1 А 2 А 3
ADD a b c

Здесь ADD – код операции сложения.

Формат двухадресной команды представлен на рис.1,б . Выполнение операции с помощью такой команды проходит по следующей схеме:

(А 1 ) * (А 2 ) -> А 1 или

(А 1 ) * (А 2 ) -> А 2

Выполнение того же самого действия c = a + b в двухадресной системе кодирования команд потребует уже двух команд, например:

КОп А 1 А 2
ADD a b a = a + b
MOV c a c = a
Одноадресная команда имеет формат, приведенный на рис.6,а . Обычно ЭВМ с одноадресной системой команд имеют особую структуру, в состав которой входит специальный регистр (регистр результата – РР ). Он служит для хранения результата операции и используется в качестве одного из операндов при выполнении операции ( рис. 2 ).

Рис. 2. Схема выполнения операции в ЭВМ с одноадресной системой команд

Схема выполнения операции на ЭВМ с одноадресной системой команд имеет вид:

(А) * (РР) -> А или

(А) * (РР) -> РР .

Операцию c = a + b в одноадресной системе команд можно выполнить следующим образом:

КОп А 1
MOVR a РР = a
ADD b РР = РР + b
MOVS c c = РР

Рассмотренные форматы команд используются при так называемом естественном порядке выполнения программы. При этом подразумевается, что после выполнения любой команды, не меняющей в явном виде порядок выполнения программы, очередная команда выбирается из ячейки ЗУ, располагающейся сразу же вслед за ячейкой (или ячейками), содержащей код текущей команды. При четырехадресной системе кодирования команд ( рис.1,г ) первые три адреса выполняют те же функции, что и в трехадресной команде, а четвертый адрес указывает адрес ячейки, где хранится следующая выполняемая команда. Такая система обеспечивает принудительный порядок выполнения команд программы. Она хотя и повышает гибкость программирования, но практического применения не получила. Основной причиной этого является существенное увеличение размера каждой команды и, соответственно, увеличение объема ЗУ, необходимого для размещения программы, в то время как реальной потребности в такой кодировке каждой команды не существует.

Несколько особое положение занимает безадресное кодирование команд . Оно используются в компьютерах, имеющих стековую организацию памяти. Обращение к ячейкам такой памяти производится последовательно с помощью специального указателя стека ( УС ), определяющего рабочую в данный момент ячейку. Каждая ячейка снабжена тэгом – специальным признаком хранимой информации. Такая ЭВМ имеет структуру, представленную на рис. 3 . В ее состав помимо АЛУ входят два специальных буферных регистра РР1 и РР2 . Здесь значение тэгов следующее: Op – в данной ячейке хранится операнд, C – признак наличия в ячейке кода операции.


Рис. 3. Схема выполнения операции в ЭВМ с безадресной системой команд

Проиллюстрируем работу такой ЭВМ на примере вычисления выражения ((a + b) * c - d) / e .

На первых двух тактах работы из памяти извлекаются операнды a и b и помещаются в рабочие регистры РР1 и РР2 . Считав следующую ячейку стековой памяти, устройство управления по ее тэгу определяет, что данная информация представляет собой код операции. Этот код направляется в АЛУ, где и проводится сложение хранящихся в регистрах операндов с записью результата в один из рабочих регистров. Так как в следующей ячейке хранится операнд, то он направляется в РР , свободный от записанного результата. После этого производится выполнение следующей операции и так далее.

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