k0b0's record.

Computer Engineering, Arts and Books

RISC-V 基本命令セットRV32Iについて(2) [@20180220 update]

RISC-Vの基本命令セットRV32Iについて(2)

条件分岐命令(Conditional Branches) f:id:k0b0:20180218114509p:plain

imm rs2 rs1 funct3 imm opcode
mnemonic
説明
[31:25] [24:20] [19:15] [14:12] [11:7] [6:0]
offset rs2 rs1 000 offset 1100011 BEQ 「rs1=rs2」の時に分岐
offset rs2 rs1 001 offset 1100011 BNE 「rs1≠rs2」の時に分岐
offset rs2 rs1 100 offset 1100011 BLT 符号付きで「rs1<rs2」の時に分岐
offset rs2 rs1 101 offset 1100011 BGE 符号付きで「rs1≥rs2」の時に分岐
offset rs2 rs1 110 offset 1100011 BLTU 符号なしで「rs1<rs2」の時に分岐
offset rs2 rs1 111 offset 1100011 BGEU 符号なしで「rs1≥rs2」の時に分岐


ロード/ストア命令(Load and Store Instructions) 

ロード命令

f:id:k0b0:20180220104858p:plain

imm rs1 funct3 rd opcode
mnemonic
説明
[31:20] [19:15] [14:12] [11:7] [6:0]
offset base 000 dest 0000011 LB 8ビットデータをロード(符号拡張)
offset base 001 dest 0000011 LH 16ビットデータをロード(符号拡張)
offset base 010 dest 0000011 LW 32ビットデータをロード
offset base 100 dest 0000011 LBU 8ビットデータをロード(ゼロ拡張)
offset base 101 dest 0000011 LHU 16ビットデータをロード(ゼロ拡張)

 

ストア命令

f:id:k0b0:20180220104958p:plain

imm rs2 rs1 funct3 rd opcode
mnemonic
説明
[31:25] [24:20] [19:15] [14:12] [11:7] [6:0]
offset src base 000 dest 0100011 SB 8ビットデータをストア
offset src base 001 dest 0100011 SH 16ビットデータをストア
offset src base 010 dest 0100011 SW 32ビットデータをストア

 

制御およびステータスレジスタ命令(CSR:Control and Status Register Instructions)

CSR Instructions

f:id:k0b0:20180220113346p:plain

csr rs1 funct3 rd opcode
mnemonic
説明
[31:20] [19:15] [14:12] [11:7] [6:0]
source/dest source 001 dest 1110011 CSRRW CSRの交換(read only)
source/dest source 010 dest 1110011 CSRRS CSRの各ビットマスク付きセット(read only)
source/dest source 011 dest 1110011 CSRRC CSRの各ビットマスク付きクリア(read only)
source/dest uimm 101 dest 1110011 CSRRWI CSRの即値との交換(read only)
source/dest uimm 110 dest 1110011 CSRRSI CSRの即値による各ビットマスク付きセット(read only)
source/dest uimm 111 dest 1110011 CSRRCI CSRの即値による各ビットマスク付きクリア(read only)

備考

近日中に追記予定。

参考

Specifications - RISC-V Foundation