RISC-16 instruction set

Opcode - код операции

opcode значение
000 R-type инструкция (регистр + регистр)
001 I-type инструкция (регистр + immediate)
010 S-type инструкция (запись значения регистра в память)
011 Load - I-type (загрузка значения из памяти в регистр)
100 B-type (Прыжок с условием)
101 UJ-type (безусловный прыжок)
110 Прыжок с записью адреса следующей инструкции в регистр (для возврата из функции)
111 No operation, reserved

Регистры: 8 16-битных регистров

Регистр Назначение Двоичный адрес
x0 Всегда равен нулю, запись невозможна 000
x1 Stack pointer, указатель на область стэка памяти 001
x2-x7 General purpose регистры 010-111

R-type

Операции с двумя регистрами с сохранением результата в третий.

3 bit 3bit 3bit 4bit 3bit
rd rs1 rs2 funct4 opcode

I-type

Операции с одним регистром и непосредственным значением (immediate). Результат сохраняется в регистр.

3 bit 3 bit 5 bit 2 bit 3 bit
rd rs1 imm funct2 opcode

S-type

3 bit 3 bit 3 bit 2 bit 3 bit
imm[4:2] rs1 rs2 imm[1:0] opcode
Записывает значение rs2 по адресу rs1 + смещение imm

B-type

Условный переход на основе сравнения двух регистров.

3 bit 3 bit 3 bit 2 bit 2 bit 3 bit
imm[4:2] rs1 rs2 imm[1:0] funct2 opcode

Переход выполняется, если условие сравнения регистров rs1 и rs2 выполняется. Смещение imm определяет адрес перехода относительно текущего PC.

UJ-type

Безусловный переход с сохранением адреса возврата в регистр rd.

3 bit 10 bit 3 bit
rd imm opcode

Адрес следующей инструкции сохраняется в rd, после чего выполняется переход на смещение imm относительно текущего PC.

JotBird Logo
Published with JotBird