RISC-V通用寄存器 寄存器ABI名称说明 x0zero0值寄存器,硬编码为0,写入数据忽略,读取数据为0 x1ra...
PMP的使用是通过设置一对PMP寄存器操作的,包括一个是地址寄存器pmpaddr,用于设置受保护的地址区域,和一个配置寄存器pmpcfg,用于设置受保护区域的读、写、执行权限以及地址匹配模式,每一对PMP寄存器称之为一个PMP条目(entry),支持的条目数量和不同CPU硬件实现相关,通常entry数量是8、16、32和64不等,具体数量需要根据...
在RV32I 中包括算术指令(add/sub)、数值比较指令(slt)、逻辑指令(and/or/xor)以及移位指令(sll/srl/sra)这几种指令。 这些指令和其他指令集差不多,它们从寄存器读取两个32位的值,并将32位运算结果再写回到目标寄存器。 I型指令:立即数算术运算 R型指令:寄存器与寄存器操作指令 需要指出的是,在寄存器与寄存器...
RISC-V架构支持32位或者64位的架构,32位架构由RV32表示,其每个通用寄存器的宽度为32比特;64位架构由RV64表示,其每个通用寄存器的宽度为64比特。 RISC-V架构的整数通用寄存器组,包含32个(I架构)或者16个(E架构)通用整数寄存器,其中整数寄存器0被预留为常数0,其他的31个(I架构)或者15个(E架构)为普通的通用整数...
rs1:源寄存器1 rs2:源寄存器2 rd:目标寄存器(RSIC-V 一个指令可以提供三个寄存器操作) 六种指令格式作用如下: 4.寄存器 在RISC-V 的规范里面定义了32 个通用寄存器。其中31个是常规寄存器,1个恒为0值的x0寄存器。 0值寄存器是为了满足汇编语言程序员和编译器编写者的使用需要,他们可以使用x0寄存器作为操作数...
在RISC-V设计的Sv32分页虚拟内存模式下,RV32拥有34位物理地址空间,故对于RV32来说,PMP必须支持34位的物理内存访问管理。故在32位地址寄存器中,保存33~2位的地址数据。而对于RV64,保存第55~2位,如下图: 也就是说,对于一个34位地址,若要保存到PMP地址寄存器中,需要将数据右移两位后存储。对于56位地址,将55...
RISC-V通过设置两类寄存器实现PMP:配置寄存器和地址寄存器。配置寄存器为8位,地址寄存器对于RV32为32位,RV64为64位,通常记录为MXLEN位。一个PMP入口由配置寄存器和地址寄存器组成。配置寄存器和地址寄存器都是CSR(控制和状态寄存器)的一部分。地址寄存器通常包含8到16个,配置寄存器共16个。实际实现中...
main函数使用jal指令,跳转到函数a,并且设置了ra寄存器(这是jal指令的操作)。 接着在函数a()内,首先把ra寄存器的值存储到栈上,然后开始执行其他操作。 在函数a()将要返回的时候,从栈上取出ra的值,并设置到ra寄存器内,于是ret指令就能返回到main函数了。
指令详解RV32I指令集以清晰的结构示例,如bge/blt等分支指令,展示了其直观的操作方式。指令格式规定了操作码、立即数、功能字段及寄存器操作,共分六种,让指令执行效率更高。寄存器系统32个通用寄存器,其中x0作为0值寄存器,为程序员提供便利。像addi x0,x0,0这样的指令,实际上就是空指令,体现了...