RV32I笔记

instruction types

R:寄存器 – 寄存器操作

I:短立即数和访存 load

S:访存 store

B:条件跳转

U:长立即数

J:无条件跳转

opcode

指令不仅仅由 opcode 区分,还有子 opcode.

主 opcode:

R 型全是 0110011

计算 I 型全是 0010011

lui 是 0110111

auipc 是 0010111

读内存 I 型都是 0000011

写内存型都是 0100011

jalr 是 1100111

jal 是 1101111

B 型是 1100011

细分 opcode

12 – 14 位是细分 opcode

R 型与计算 I 型:

op code
add, sub 000
sll 001
slt 010
sltu 011
xor 100
srl, sra 101
or 110
and 111

随后,sub 和 sra 和 srai 要将第 30 位置为 1,其它的此位置无立即数的是 0,有立即数的是立即数。

ALU 操作码设计

以上 10 个操作加上直接输出 A, B 共 12 个操作,用 4 位就够了。由于不确定透传 A, B 是否需要配合其它译码电路,先给它们两个单独划分一个位,后续再根据需求修改操作码。

op code
add 00000
sub 01000
sll 00001
slt 00010
sltu 00011
xor 00100
srl 00101
sra 01101
or 00110
and 00111
srcA 10000
srcB 10001

评论

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注