RISC-V 快速查询手册
涵盖 RV32I/RV64I/M/A/F/Zicsr 指令集及完整 CSR 列表 · Based on RISC-V ISA Specification v20260120
47
RV32I 基础指令
12
RV64I 扩展指令
13
M 乘除法指令
22
A 原子操作指令
26
F 浮点指令
6
CSR 操作指令
7
特权指令
60+
CSR 寄存器
| 扩展 | 名称 | 说明 | 状态 |
|---|---|---|---|
| RV32I | Base Integer (32-bit) | 32位整数基础指令集,包含 47 条指令 | ● Ratified |
| RV64I | Base Integer (64-bit) | 64位整数扩展,在 RV32I 基础上增加 12 条指令 | ● Ratified |
| M | Integer Multiply/Divide | 整数乘除法:MUL/DIV/REM 及变体 | ● Ratified |
| A | Atomic Instructions | 原子操作:LR/SC/AMO 系列 | ● Ratified |
| F | Single-Precision Float | 单精度浮点,需要 f0–f31 浮点寄存器 | ● Ratified |
| Zicsr | CSR Instructions | 控制状态寄存器读写指令 | ● Ratified |
| Priv | Privileged Instructions | 特权指令:MRET/SRET/WFI/SFENCE.VMA | ● Ratified |
| Pseudo | Pseudo Instructions | 汇编器伪指令,由真实指令展开 | ● Assembler |
指令集参考
点击扩展标签过滤 · Click extension tabs to filter
| 助记符 Mnemonic | 扩展 | 格式 | 语法 Syntax | 说明 Description | 操作 Operation |
|---|
CSR 寄存器参考
Control and Status Registers · RISC-V 最多支持 4096 个 CSR
| 地址 Address | 名称 Name | 权限 | 类别 | 说明 Description |
|---|
指令编码格式
RISC-V 32位固定长度指令,共 6 种基础格式
R-type · 寄存器-寄存器运算 (ADD, SUB, AND, OR, XOR, SLL, SRL, SRA, SLT, SLTU...)
31:25
funct7
24:20
rs2
19:15
rs1
14:12
f3
11:7
rd
6:0
opcode
rd = rs1 OP rs2 · funct7[5]=0 (正常), funct7[5]=1 (SUB/SRA)
I-type · 立即数运算/加载/JALR (ADDI, LW, JALR, CSRRW...)
31:20
imm[11:0]
19:15
rs1
14:12
f3
11:7
rd
6:0
opcode
rd = rs1 OP sext(imm[11:0]) · 立即数符号扩展至 XLEN 位
S-type · 存储指令 (SB, SH, SW, SD)
31:25
imm[11:5]
24:20
rs2
19:15
rs1
14:12
f3
11:7
imm[4:0]
6:0
opcode
M[rs1 + sext(imm)] = rs2 · 立即数分两段编码
B-type · 条件分支 (BEQ, BNE, BLT, BGE, BLTU, BGEU)
31:25
imm[12|10:5]
24:20
rs2
19:15
rs1
14:12
f3
11:7
imm[4:1|11]
6:0
opcode
if (rs1 CMP rs2) PC += sext(imm<<1) · 偏移量为 2 字节倍数,±4KiB 范围
U-type · 上位立即数 (LUI, AUIPC)
31:12
imm[31:12]
11:7
rd
6:0
opcode
rd = imm[31:12] << 12 · 20位立即数放入寄存器高位
J-type · 无条件跳转 (JAL)
31:12
imm[20|10:1|11|19:12]
11:7
rd
6:0
opcode
rd = PC+4; PC += sext(imm<<1) · ±1MiB 跳转范围
Opcode 编码表
| opcode[6:0] | 指令类型 | 代表指令 |
|---|---|---|
| 0110111 | U-type | LUI |
| 0010111 | U-type | AUIPC |
| 1101111 | J-type | JAL |
| 1100111 | I-type | JALR |
| 1100011 | B-type | BEQ BNE BLT BGE BLTU BGEU |
| 0000011 | I-type | LB LH LW LBU LHU LD LWU |
| 0100011 | S-type | SB SH SW SD |
| 0010011 | I-type | ADDI SLTI SLTIU XORI ORI ANDI SLLI SRLI SRAI |
| 0110011 | R-type | ADD SUB SLL SLT SLTU XOR SRL SRA OR AND |
| 0001111 | I-type | FENCE FENCE.I |
| 1110011 | I-type | ECALL EBREAK CSRRW CSRRS CSRRC CSRRWI CSRRSI CSRRCI |
| 0011011 | I/R-type | ADDIW SLLIW SRLIW SRAIW (RV64I) |
| 0111011 | R-type | ADDW SUBW SLLW SRLW SRAW (RV64I) |
| 0101111 | R-type | LR.W SC.W AMOSWAP.W AMOADD.W... (A ext) |
| 0000111 | I-type | FLW FLD (F/D ext) |
| 0100111 | S-type | FSW FSD (F/D ext) |
| 1000011 | R4-type | FMADD.S (F ext) |
| 1000111 | R4-type | FMSUB.S (F ext) |
| 1001011 | R4-type | FNMSUB.S (F ext) |
| 1001111 | R4-type | FNMADD.S (F ext) |
| 1010011 | R-type | FADD.S FSUB.S FMUL.S FDIV.S FSQRT.S FMIN.S FMAX.S... |
整数寄存器约定
RISC-V ABI 调用约定 · x0–x31 共 32 个通用寄存器
浮点寄存器 (F/D 扩展)
| 寄存器 | ABI名称 | 说明 | 保存者 |
|---|---|---|---|
| f0–f7 | ft0–ft7 | 浮点临时寄存器 Temporary | 调用者 Caller |
| f8–f9 | fs0–fs1 | 浮点保存寄存器 Saved | 被调用者 Callee |
| f10–f11 | fa0–fa1 | 函数参数/返回值 Argument/Return | 调用者 Caller |
| f12–f17 | fa2–fa7 | 函数参数 Argument | 调用者 Caller |
| f18–f27 | fs2–fs11 | 浮点保存寄存器 Saved | 被调用者 Callee |
| f28–f31 | ft8–ft11 | 浮点临时寄存器 Temporary | 调用者 Caller |
舍入模式 (frm/fcsr)
| 编码 | 缩写 | 舍入方式 |
|---|---|---|
| 000 | RNE | Round to Nearest, ties to Even · 就近舍入(偶数优先) |
| 001 | RTZ | Round towards Zero · 向零舍入(截断) |
| 010 | RDN | Round Down (towards −∞) · 向下舍入 |
| 011 | RUP | Round Up (towards +∞) · 向上舍入 |
| 100 | RMM | Round to Nearest, ties to Max Magnitude · 就近舍入(绝对值大者) |
| 111 | DYN | Dynamic (use frm register) · 动态(使用 frm 寄存器) |