Операнды команд могут быть как регистрами, так и ячейками
памяти. Некоторые архитектуры, например PDP-11 и VAX, допускают произвольное
сочетание регистров и ячеек памяти в одной команде. В частности, допустимы
команды пересылки из памяти в память и арифметические операции, оба (у
двухадресной PDP-11) или все три (у трехадресного VAX) операнда которых
расположены в памяти. В других архитектурах, например в х86 и МС680хО
только один операнд команды может размещаться в памяти, а второй всегда
обязан быть регистром (впрочем, оба эти процессора имеют и отдельные команды
память-память, например инструкции групповой пересылки данных). У RISC-процессоров
арифметические операции разрешены только над регистрами, а для обращений
к памяти выделены специальные команды LD (LoaD,
загрузить) и ST (Store, сохранить).
В зависимости от подхода, применяемого в конкретной системе команд, архитектуры
подразделяются на память-память,
регистр-память и регистр-регистр. Архитектура
регистр-регистр привлекательна тем, что позволяет сделать длину команды
фиксированной (адресное поле могут иметь только команды LD/ST и команды
Режимы адресации VAX
У процессоров VAX операнды команд кодируются одним байтом. Старшие 4 бита
операнда указывают режим адресации, младшие— номер регистра. Если режим
предполагает использование адресных полей, эти поля следуют за операндом.
При некоторых режимах возможно использование нескольких адресных полей
и длина одного операнда, таким образом, может доходить до 10 байт (рис.
2.6).
Рис. 2.6. Форматы одно-, двух- и трехадресной команд процессора VAX
Режимы адресации SPARC
У процессоров SPARC адресацию осуществляют лишь четыре группы команд —
LD (загрузка слова из памяти в регистр), ST (сохранение значения регистра
в памяти), JMPL (переход по указанному адресу и сохранение текущего адреса
в регистре) и команды условного перехода. Все остальные команды манипулируют
регистрами и константами. Команда длиной 32 бита имеет три битовых поля:
два задают 5-разрядные номера регистров, третье — либо регистр, либо 13-разрядное
целое число (см. рис. 2.3). Команды LD, SP и JMPL имеют такой же формат
и позволяют использовать в качестве адреса либо сумму двух регистров,
либо регистра и 13-разрядного значения, интерпретируемого как знаковое
число в двоично-дополнительной кодировке. Это перекрывает далеко не все
перечисленные далее режимы адресации. Многие распространенные режимы адресации
на SPARC приходится реализовать с помощью нескольких команд.
Даже классические полностью ортогональные архитектуры — PDP-11, VAX, MC680xO — имеют по крайней мере одно отклонение от полной ортогональности: режим адресации коротким смещением относительно счетчика команд (см. разд.