当前位置: 首页 > 工具软件 > PicoRV32 > 使用案例 >

PicoRV32 笔记 07 再谈指令集

何玺
2023-12-01

PicoRV32 支持RISCV基本指令集外,还支持压缩指令(C扩展),乘法指令(M扩展)。

PicoRV32对指令解码时候,读取一条32bit指令,首先判断指令的最低2bit是否是2'b11,如果2'b11则是一条32bit指令,否则是一条16bit指令(C扩展)。

针对RISCV 基础指令集,opcode占指令的低7位,低7位中最低两位用于区分16位和32位指令,则只有5bit用于区分指令类型,我翻开手册整理指令如下

指令分类
opcode[6:2]opcode[1:0]指令说明
5'b000002'b11LB,LBU,LH,LHU,LW加载指令
5'b000012'b11FLW,FLD,FLQRV32F/D/Q扩展,加载指令
5'b000102'b11未查到
5'b000112'b11FENCE
5'b001002'b11

ADDI,SLTI,SLTIU,XORI,

ORI,ANDI,SLLI,SRLI,SRAI

立即数指令
5'b001012'b11AUIPC
5'b001102'b11RV64指令
5'b001112'b1148位指令集
5'b010002'b11SB,SH,SW存储指令
5'b010012'b11RV32F/D/Q加载指令
5'b010102'b11未查到
5'b010112'b11RV32A/RV64A 原子指令
5'b011002'b11

ADD,SUB,SLL,SLT,SLTU,

XOR,SRL,SRA,OR,AND,

寄存器指令/乘法指令8条
5'b011012'b11LUI
5'b011102'b11RV64I/RV64M指令
5'b011112'b11表示此指令为64位指令
5'b100002'b11RV32F/D/Q扩展
5'b100012'b11RV32F/D/Q扩展
5'b100102'b11RV32F/D/Q扩展
5'b100112'b11RV32F/D/Q扩展
5'b101002'b11RV32F/D/Q扩展
5'b101012'b11未查到
5'b101102'b11未查到
5'b101112'b1148位指令集
5'b110002'b11

BEQ,BNE,BLT,BGE,BLTU,

BGEU

5'b110012'b11JALR
5'b110102'b11未查到
5'b110112'b11JAL
5'b111002'b11ECALL,EBREAK,CSRxxx
5'b111012'b11未查到
5'b111102'b11未查到
5'b111112'b11保留

根据上表PicoRV32支持指令

PicoRV32指令
opcode[6:2]指令
5'b00000LB,LBU,LH,LHU,LW
5'b00011FENCE
5'b00100

ADDI,SLTI,SLTIU,XOR,

ORI,ANDI,SLLI,SRLI,SRAI

5'b00101AUIPC
5'b01000SB,SH,SW
5'b01100

ADD,SUB,SLL,SLT,SLTU,XOR,

SRL,SRA,OR,AND,

5'b01101LUI
5'b11000BEQ,BNE,BLT,BGE,BLTU,BGEU
5'b11001JALR
5'b11011JAL
5'b11100ECALL,EBREAK

 类似资料: