К этой группе относятся режимы, в которых доступ к операнду
не содержит адресации как таковой.
Первым из таких режимов является операнд-регистр. Режим этот концептуально
крайне прост и в дополнительных комментариях не нуждается.
Второй режим — операнд-константа. В документаииях по многим процессорам
этот режим называют литеральной (literal)
и немедленной (immediate) адресацией.
Казалось бы, трудно придумать более простой и жизненно необходимый режим.
Однако полноценно реализовать такие операнды можно используя либо команды
переменной длины, либо команды, которые длиннее слова (чаще всего это
бывает у процессоров гарвардской архитектуры, например, уже упоминавшегося
PIC).
Литеральная адресация в системе команд
SPARC
Разработчики процессоров, которых не устраивает ни одно из названных условий,
вынуждены проявлять фантазию. Так, у RISC-процессоров SPARC и команда,
и слово имеют одинаковую длину— 32 бита. Адресное поле такой длины в команде
Пример 2.1. Формирование 64-разрядного значения на SPARC v9, цит. по [docs.sun.com 806-3774-10]
! reg — промежуточный регистр, rd — целевой.
sethi %uhi(value), reg
or reg, %ulo(value), reg
sllx reg,32,reg ! сдвиг на 32 бита
sethi %hi(value), rd
or rd, reg, rd
or rd, %lo(value), rd
"Короткие литералы" разного рода нередко используются и в других процессорах, особенно имеющих большую разрядность. Действительно, большая часть реально используемых констант имеет небольшие значения, и выделение под каждую такую константу 32- или, тем более, 64-разрядного значения привело бы к ненужному увеличению кода.
Короткие литералы VAX
У процессоров семейства VAX есть режим адресации, позволяющий использовать
битовое поле, которое в других режимах интерпретируется как номер регистра,
в качестве 4-битового литерала. Вместе с двумя битами режима адресации
этим способом можно задать 6-разрядный литерал, знаковый или беззнаковый
в зависимости от контекста [Прохоров 1990].
Короткие литералы МСбЗОхО
У процессоров семейства МС680хО литерал может иметь длину 1 или 2 байта.
Кроме того, предоставляются команды ADDQ и SUBQ, которые позволяют добавить
к указанному операнду или вычесть из него целое число в диапазоне от 1
до 8.