概述
32位、64位和128位支持
应用领域
嵌入式系统:由于其低功耗和高效性,RISC-V 非常适合嵌入式设备,如物联网(IoT)设备。
高性能计算:RISC-V 的灵活性使其能够满足高性能计算的需求,并在超算等领域逐渐得到应用。
TCG IR(Tiny Code Generator Intermediate Representation)是 QEMU 中使用的中间表示(Intermediate Representation,IR),主要用于实现目标架构与主机架构之间的代码转换和优化。TCG IR 作为一个中间层,使得 QEMU 能够支持多种不同的处理器架构,同时提高了代码生成的灵活性和效率。
c语言-->汇编语言-->机器语言
汇编语言是由RISC-V指令集
指令存储器中存储指令(机器语言)
数据存储器中存储数据
基本名词介绍
PC地址 给一个地址出一个指令
OP Code操作码:识别指令----r type指令/i type指/UT type/load store
控制器:根据指令发出控制信号
寄存器堆:32个寄存器(存数据的)---直接与CPU交互
Data memory存储空间大,速度慢
指令集
add Rd Rs1 Rs2
意义:Rs1+Rs2=Rd
ALU逻辑运算器
参考RV32基本指令集表
根据OP Code判断是
r type的指令和i type指令
r type的指令
Add加法
Sub减法
SLT小于之一
SLTU无符号的小于之一
OR或
AND与
XOR异或
移位指令
SLL逻辑左移
SRL逻辑右移
SRA算术右移
i type指令
ADDI
SLTI小于之一
SLTIU无符号的小于之一
XORI
ORI
ANDI
移位指令
SLLI逻辑左移
SRLI逻辑右移
SRAI算术右移
SRLI和SRAI的区别是补位补的是算术位还是符号位
R取自寄存器堆 i取自于立即数
R type指令和i type指令是从ALU中写回到寄存器堆里的 i type就是没有Rs2
访存指令
Load指令
从data memory里面写回去,从数据寄存器里取出来的数据写回到寄存器中(只有rs1和rd)
LB(8bits 但实际要扩展成32位形式,符号扩展)
LH(16bits但实际要扩展成32位形式,符号扩展)
LW(32bits)
LBU (8bits 但实际要扩展成32位形式,无符号扩展)
LHU(16bits但实际要扩展成32位形式,无符号扩展)
Store指令
从寄存器中取出的数据写回到数据寄存器中(有rs1(基地址),rs2(把rs2中的数据写回到寄存器中))
SB(从32位截取8位读)
SH(从32位截取16位读)
SW(直接读32位)
顺序指令
PC+4原理
32位机:一条指令占了四个地址 (1 btye= 8 bits 4 btye=32 bits)
一个字节占一个地址
PC+4(顺序执行)
Beq指令
跳转执行 需要把跳转信息存储在立即数中调用
PC+16/32.....(跳转执行但要是4的倍数 )----跳转指令-----
条件跳转
(Beq相等则跳转 Bne不相等则跳转 Bge大于等于则跳转 BLT小于则跳转)
和无条件跳转
(Jal(当前数加立即数) Jalr(原寄存器中的数加立即数))
信号(在Control中识别)
Branch 选择PC+4
MemRed 在load指令状态下,实际中可以一直读
MemWrite 在store指令下,不能一直写
MemtoReg多选器的信号 Load指令写回去,或者ALU的运算结果写回去
RegWirte写回寄存器堆
ALU control识别具体那种运算