RISC-V

本文最后更新于:2023年5月11日 晚上

RISC-V

RISC-V 是多个 RV 指令集系列的总称,是一个开源的指令集,它遵循模块化设计理念,核心是一个名为 RV32I 的基础 ISA

RV32I 寄存器

通用寄存器 别名 功能 维护
x0 zero 零寄存器 N/A
x1 ra return adress Caller
x2 sp 栈指针 Callee
x3 gp 全局指针
x4 tp 线程指针
x5 t0 临时寄存器or替代链接寄存器 Caller
x6-x7 t1-t2 临时寄存器 Caller
x8 s0/fp 保存寄存器 Callee
x9 s1 保存寄存器 Callee
x10-x11 a0-a1 函数参数or返回值 Caller
x12-17 a2-a7 函数参数 Caller
x18-x27 s2-s11 保存寄存器 Callee
x28-x31 t3-t6 临时寄存器

控制状态寄存器CSR

通用寄存器 访问属性 功能
mvendorid R 厂商ID
marchId R 体系结构id
mimpid R 特点实现id
mhartid R hart(硬件线程) id
misa R 指令集架构信息
mcycle/mycycleh R 时钟周期计数器
cycle/ycycleh R 时钟周期计数器
minstret R 退休指令计数器
mstatus RW 状态控制
mie RW 中断使能
mip R 当前中断pengding位
mtvec RW 中断/异常矢量
mtval RW 异常和中断的补充信息(如异常指令,非法地址)
mscratch RW 提供一个上下文保存寄存器
mepc RW 异常程序指针
mcause R 异常/中断原因

RV32I 基础指令(47)

指令格式

RISC-V ISA 是变长指令结构,但 RV32I 指令是固定长度,一条指令为32个bit,也就是4个字节,有6种指令格式:

  • R 类型指令:用于寄存器-寄存器操作
  • I 类型指令:用于短立即数和访存 load 操作
  • S 类型指令:用于访存 store 操作
  • B 类型指令:用于条件跳转操作
  • U 类型指令:用于长立即数
  • J 类型指令:用于无条件跳转

RV32I的6种指令格式

基础指令

RV32I的指令


RISC-V
https://shenysec.github.io/2023/04/23/RISC-V/
作者
sheny
发布于
2023年4月23日
更新于
2023年5月11日
许可协议