Выбор форматов команд

При выборе форматов следует исходить из принципов RISC-об-работки, в соответствии с которыми используется минимальное число форматов команд. Наиболее желательным является использоване одного
(32-разрядного) формата. Приемлемым можно также считать и вариант, когда команды имеют разную длину.


Рис. 9

 

На рис. 9 и 10 приведены возможные форматы команд. На рис. 9 показаны форматы команд, соответствующие второму случаю. Операционные команды (рис. 9, а) имеют длину 16 разрядов и содержат четыре поля: 7-разрядное поле кода операции (OP) и три 3-разрядных поля для задания регистров источников и приемника. Типичная двухместная операция типа сложения выполняется по схеме R1 ← <R2> * <R3>. Команды обращения к памяти, обращения к подпрограммам, переходов, а также команды, использующие непосредственные операнды, имеют длину 32 разряда (рис. 9,б).


Рис. 10

Кроме полей OP, R1 и R2 имеется 19-разрядное поле смещения (disp).

Адрес памяти определяется сложением содержимого R2 и disp: A = <R2> + + disp.

На рис. 10 показан пример 32-разрядного формата. Команда (рис. 10) содержит шесть полей: 7-разрядное поле кода операции (OP),
1-разрядное поле SCC, разрешающее или запрещающее установку флажков. Поля DEST, SRS1 и SRS2 задают, соответственно, регистр-приемник и регистры-источники данных. Одноразрядное поле IMM определяет содержимое 13-разрядного поля SRS2. Если IMM = 0, то содержимое указанного поля интерпретируется как номер регистра, в противном случае – рассматривается как 13-разрядная константа. В командах обращения к памяти оно используется в качестве смещения; при этом адрес памяти определяется как A = <SRS1> + SRS2.