Трехадресная система команд
Адрес следующей команды связывает отдельные команды в программу, определяющую всю последовательность операций, т.е. процедуру обработки. Но этот адрес можно не задавать явно в каждой команде. Вместо этого, команды программы можно располагать в ячейках памяти в той последовательности, в которой они должны выполняться, а в схеме процессора предусмотреть специальное устройство –счетчик команд (указатель команд), назначение которого – вычисление адреса следующий команды. Команда становится трехадресной (рис. 3.6).
Рис. 3.6. Структура и схема выполнения трехадресной команды
Вычисление адреса следующей команды производится путем прибавления длины выполняемой команды (например, в байтах) к её адресу. Но отдельные смежные фрагменты программы могут размещаться и в несмежных участках памяти. Для их соединения в единую программу используются команды передачи управления, содержащие указание на начало следующего линейного участка программы.
Например, команда безусловного перехода:
Jmp<адрес передачи управления>.
В адресной части этих команд указывается адрес первой команды следующего фрагмента программы. Команды передачи управления могут быть условными, когда передача управления производится с учетом кода условия, хранящегося в регистре состояния ЭВМ.
Например, команда JEZ - переход, если признак результата предыдущей команды равен нулю:
JEZ <адрес передачи управления при выполнении условия перехода>
Команды условной передачи управления позволяют разрабатывать разветвляющиеся и циклические программы.Разновидностью команд передачи управления являются команды передачи управления с возвратом (команды переходов на подпрограммы). При выполнении этих команд перед передачей управления на подпрограмму запоминается адрес возврата (содержимое счетчика команд до передачи управления). Адрес возврата используется другой разновидностью команд передачи управления – командами выхода из подпрограммы.Адрес возвратаобычно запоминается в специальном регистре PSW (слово состояния программы, семейство PDP-11), ячейке оперативной памяти (семейство IBM/370), или в аппаратном стеке (персональные компьютеры, программно совместимые с IBM PC).
Таким образом, переход к трехадресной системе команд сопровождается:
· отказом от независимости в расположении отдельных команд в программе,
· введением в состав процессора специального устройства (счетчика
команд), вычисляющего адрес следующей команды,
· введением в состав команд процессора специальных команд для задания точек нарушения выполнения команд в естественном порядке и указания адресов переходов. Это команды задания условного и безусловного переходов (с возвратом или без возврата).
По сути дела в этом варианте одну сложную команду, задающую операцию и связь со следующей командой, разбили на две команды: команду, задающую текущую операцию, и команду возможного перехода на новый линейный участок программы. По статистике на каждые шесть команд обработки данных приходится только одно указание на передачу управления. Следовательно, выделение относительно "редких" операций передачи управления в отдельные команды значительно сокращает командный код.
Двухадресная система команд
В качестве адреса результата операции можно использовать адрес одного из исходных операндов. При этом результат операции записывается "поверх" одного из операндов, значение которого теряется, но команда становится компактнее (рис. 3.7).
Рис. 3.7. Структура и схема выполнения двухадресной команды
Это двухадресные команды. В двухадресных командах один адрес рассматривается как адрес-источник, а другой – как адрес-приемник.
Естественно, что в этих командах только операнд-источник можно зада-
вать непосредственным значением.
Неизбежная потеря значения одного из операндов при использовании двухадресных команд потребовала введения в состав команд процессора команды пересылки (копирования) объекта-источника в ячейку приемника. Примером такой команды может служить команда пересылки MOV:
MOV А1, А2.
Необходимость такого копирования данных в некоторых случаях значительно удлиняла программный код.
Дата добавления: 2021-01-26; просмотров: 709;