
7. Система команд эвм и адресация операндов
7.1. Типы команд
Важной характеристикой ЭВМ. в большой степени определяющей разделение ЭВМ на различные типы, является система команд ЭВМ
Команда представляет собой код, определяющий операцию вычислительной машины и данные, участвующие в операции. Команда содержит также в явной или неявной форме информацию об адресе, по которому размещается результат операции, и об адресе следующей команды. Под системой команд ЭВМ обычно понимают набор инструкций, которые может выполнять ее центральный процессор, способы кодирования этих инструкций и методы указания местонахождения операндов. Мощность и гибкость системы команд во многом определяют качественные показатели ЭВМ в целом.
Набор команд ЭВМ обычно включает в себя большое количество (от нескольких десятков до сотен) команд различного назначения. Назначение команд существенным образом влияет на способы их кодирования и длину.
По характеру выполняемых операций различают следующие основные группы команд: команды арифметических операций, команды логических (поразрядных) операций (И, ИЛИ. НЕ и др.). команды пересылки кодов между компонентами ЭВМ. команды управления порядком выборки и исполнения команд (команды передачи управления), команды задания режима работы процессора и др.
В
команде, как правило, содержатся не сами
операнды, а информация об адресах ячеек
памяти или регистрах, в которых они
находятся. Код команды можно представить
состоящим из нескольких частей или
полей, имеющих определенное функциональное
назначение при кодировании командной
информации. Как показано на рис. 7.1,
командный код в общем случае состоит
из операционной части н адресной части.
Каждая из этих частей, в свою очередь, может состоять из нескольких полей. Это особенно характерно для адресной части.
Операционная часть содержит код операции (КОп). который задает вид операции (сложение, пересылка, переход и т.д.). Адресная часть команды содержит информацию о местонахождении (адресах) операндов и результата операции, а в некоторых случаях и об адресе следующей команды. Форматом команды называют разметку номеров разрядов (бит) кода команды, определяющих расположение и границы отдельных полей команды
Важной и сложной проблемой при проектировании ЭВМ является выбор структуры и формата команды, назначения и длины отдельных ее полей. Естественно стремление разместить в команде в возможно более полной форме информацию о предписываемой командой операции и местонахождению необходимых операндов и результата операции. Однако в условиях современных ЭВМ, когда значительно возросло количество выполняемых ЭВМ команд и емкость адресуемой памяти (длина адресного слова), это приводит к недопустимо большой длине кода команды и усложнению ее формата. Решение выбора формата команд особенно усложняется в малых ЭВМ и микропроцессорах. работающих с коротким машинным словом.
Простейшим типом команд являются так называемые безадресные команды, т.е. команды, для выполнения которых операнды не требуются. Типичные команды такого типа это: ОСТАНОВ (HALT). ОЖИДАНИЕ ВНЕШНИХ СОБЫТИЙ (WAIT). НЕТ ОПЕРАЦИИ (NOP) и др. У этих команд всё отводимое под команду' машинное слово представляет собой код операции.
Более сложными типами команд являются команды, для выполнения которых требуется один или несколько операндов. В этом случае при кодировании команды, помимо кода, описывающего выполняемую командой функцию. необходимо тем или иным образом указывать участвующие в операции входные операнды (операнды ‑ источники данных) или их местонахождение (в регистрах или памяти), а также место, куда должен быть помещен результат операции (обычно называемый приемником данных).
В связи с этим, в зависимости от количества операндов, в ЭВМ можно представить следующие типы разновидности команд:
♦ одноадресные команды, оперирующие только одним операндом (например. команды ОЧИСТИТЬ ЯЧЕЙКУ ПАМЯТИ, УВЕЛИЧИТЬ ЗНАЧЕНИЕ ЯЧЕЙКИ НА ЕДИНИЦУ, ИЗМЕНЕНИТЬ ЗНАК ЧИСЛА и другие:
♦ двухадресные команды, для работы которых необходимо указание двух адресов (например, команда КОПИРОВАТЬ СОДЕРЖИМОЕ ОДНОЙ ЯЧЕЙКИ В ДРУГУЮ);
♦ трехадресные команды, например команда ‑ СЛОЖИТЬ СОДЕРЖИМОЕ ДВУХ ЯЧЕЕК И РЕЗУЛЬТАТ ПОМЕСТИТЬ ПО ТРЕТЬЕМУ АДРЕСУ;
♦ четырехадресные, см. пример команды приведенной выше, но в которой добавлено указание адреса команды которая должна выполняться после данной.
Для адресации каждого операнда в коде команды выделяется специальное поле (несколько разрядов). Очевидно, что количество указываемых в команде операндов н способ указания их адресов существенным образом влияют на длину команды (количество разрядов необходимых для кодирования команды). В связи с этим во многих ЭВМ ограничиваются одноадресными и двухадресными командами. В этом случае, как. например, в команде сложения, требующей указания адресов двух входных операндов и третьего адреса для помещения результата операции, ограничиваются указанием только двух адресов, помещая результат операции, т.е. операнд-приемник, по адресу одного из двух входных операндов-источников. Естественно, что при этом после выполнения операции значение одного из операндов будет утеряно.
Учитывая, что адрес операнда занимает одно машинное слово, при непосредственном указании в команде адресов операндов, можно размещать команду в памяти ЭВМ в нескольких следующих подряд ячейках памяти. Однако. проблема адресации операндов, т.е. способов указания нх местонахождения на самом деле является более сложной, чем просто проблема увеличения длины команды. Обычно в ЭВМ используется не один, а несколько способов формирования исполнительного адреса операнда по информации, указываемой в соответствующем поле команды. Это связано, в частности, с необходимостью обеспечения эффективного преобразования в машинные коды программ, написанных на языках высокого уровня, с использованием при программировании разнообразных способов структурной организации данных (массивов, стеков, очередей и др.). Например, в качестве исполнительного адреса операнда может указываться один из регистров процессора, адрес ячейки памяти, в команде может указываться адрес ячейки памяти, содержащей адрес операнда или смещение этого адреса, относительно адреса самой команды и др. Обычно, чем мощнее ЭВМ. тем разнообразнее методы адресации операндов. Рассмотрим типичные для большинства ЭВМ методы адресации операндов.