Сдвиг вправо логический:
- srl rC, rA, rB (shift right logical);
- srli rC, rA, Immed5 (shift right logical immediate).
Выполняют сдвиг содержимого регистра rA вправо на количество разрядов, заданное в пяти младших разрядах rB (Immed5). Освободившиеся разряды заполняются нулями. Результат помещается в rC.
Сдвиг вправо арифметический:
- sra rC, rA, rB (shift right arithmetic);
- srai rC, rA, Immed5 (shift right arithmetic immediate).
Выполняют сдвиг содержимого регистра rA вправо на количество разрядов, заданное в пяти младших разрядах rB (Immed5). Освободившиеся разряды заполняются знаковым. Результат помещается в rC.
Сдвиг влево логический:
- sll rC, rA, rB (shift left logical);
- slli rC, rA, Immed5 (shift left logical immediate).
Выполняют сдвиг содержимого регистра rA влево на число разрядов, заданное в пяти младших разрядах rB (Immed5). Освободившиеся разряды заполняются нулями. Результат помещается в rC.
Сдвиг циклический:
- ror rC, rA, rB (rotate right) – циклический сдвиг вправо;
- rol rC, rA, rB (rotate left) – циклический сдвиг влево;
- roli rC, rA, Immed5 (rotate left immediate) – циклический сдвиг влево.
Выполняют циклический сдвиг вправо/влево содержимого регистра rA на значение, заданное в пяти младших разрядах rB (Immed5). Результат помещается в rC.
|
|
Команды пересылки
Команды пересылки копируют данные из одного регистра в другой, либо помещают непосредственную величину в регистр процессора. Команды пересылки, по сути, являются псевдокомандами. То есть, при компиляции они будут заменены на одну или две исполнимых команды. Ниже приведены команды пересылки с краткими пояснениями и соответствующие выполняемые команды процессора.
- mov rC, rA rC ← rA ~ add rC, rA, r0
- movi rB, Immed16 rB ← Immed16 ~ addi rB, r0, Immed16
- movui rB, Immed16 rB ← Immed16 ~ ori rB, r0, Immed16
- movie rB, Label rB ← адрес Label
Эта команда выполняется как
orhi rB, r0, % hi (Label), где % hi (Label) старшие16 бит Label
ori rB, rB, % lo (Label), где % lo (Label) младшие16 бит Label