7.3指令系统实例:RISC-V架构

SyEic_L MVP++

1.RISC-V指令系统概述

  • 核心:RV32I

  • 扩展标准集:RV32M、RV32F、RV32D、RV32A

  • 32位架构RV32G = RV32IMAFD

    压缩指令集RV32C(指令长度16位)

  • 32位架构RV64G = RV64MAFD

    压缩指令集RV64C(指令长度16位)

2.RISC-V指令参考卡

  • R-型为寄存器操作数指令

  • I-型为短立即数或装入(Load)指令

  • S-型为存储(Store)指令

  • B-型为条件跳转指令

  • U-型为长立即数操作指令

  • J-型为无条件跳转指令

  • opcode:7位操作码字段

  • rd、rs1和rs2:通用寄存器编号

  • imm:立即数,其位数在括号[]中表示

  • funct3和funct7:分别表示3位功能码和7位功能码,和opcode字段一起定义指令的操作功能

32位RISC-V指令格式

3.基础整数指令集

整数运算

整数运算类指令

  • lui rd, imm20:将立即数imm20存到rd寄存器高20位,低12位为0。
  • sltiu rd, rs1, imm12:将rs1内容与imm12符号扩展结果按无符号整数比较,若小于,则1存入rd中;否则,0存入rd中。

控制转移

控制转移类指令

  • jal:PC←PC+SEXT[imm[20:1]<<1];R[rd]←PC+4
    jal x1, imm:实现过程调用
    jal x0, imm:实现无条件跳转
  • jalr:PC←R[rs1]+SEXT[imm[12]];R[rd]←PC+4
    jalr x0, x1, 0:实现过程调用的返回
  • B型:分支指令,判断后转移
    转移目标地址:PC+SEXT[imm[12:1]<<1]

存储访问

存储器访问类指令

  • I型:取数指令:R[rd] ← M[R[rs1] + SEXT[imm12]]
    Ibu、Ihu:分别为无符号字节、半字取,取出数据按0扩展为32位,装入rd
  • S型:存数指令:M[R[rs1] + SEXT[imm12]] ← R[rs2]
    sb、sh:分别将rs2寄存器中低8、低16位写入存储单元中
  • 汇编形式:lw rd, imm12(rs1)
    sw rs2, imm12(rs1)

4.可选扩展指令集

  • Title: 7.3指令系统实例:RISC-V架构
  • Author: SyEic_L
  • Created at : 2025-04-21 16:00:14
  • Updated at : 2025-04-21 16:00:14
  • Link: https://blog.syeicl.vip/2025/04/21/7-3指令系统实例:RISC-V架构/
  • License: This work is licensed under CC BY-NC-SA 4.0.
Comments