1 通用寄存器 1.1 通用整数寄存器 RISC-V 架构提供32个通用寄存器x0-x31,其中x0 有些特殊,x0 寄存器被设置为硬件连线的常数0,读恒为0,写无效,这个寄存器在一些地方很有作用,因为程序运行中常数0的使用频率非常高,所以专门用一个寄存器来存放常数0,并没有浪费寄存器数量,并且使得编译器工作更加简便,这一点也是RI...
映射方式:虚拟内存的27位会被分成3段,每段为虚拟地址中的9Bit位组成,每段为一层,用于对应寻找物理内存地址,第一段就是顶层目录,其大小就是4096byte,对于其中的每个条目大小是64bits,也就是8byte所以一个目录可以存放512个条目即512个物理内存地址,通过satp寄存器的内容寻找到存放在第一个目录中的位置中数据,以此...
x2寄存器:别名sp,栈指针寄存器,指向栈的地址 x3寄存器:别名gp,全局寄存器,用于链接器优化 x4寄存器:别名tp,线程寄存器,保存指向进程控制块的指针 x5-x7,x28-x31寄存器:别名t0-t6,临时寄存器 x8-x9,x18-x27寄存器:别名s0-s11,其中s0可用作栈帧指针(FP) x10-x17寄存器:别名a0-a7,在函数调用中传递参数和返回值 ...
尽管RISC-V 指令集本身并没有对 JAL 或 JALR 中目标寄存器的取值做出限制, 但是根据前面提到的函数调用约定(Calling Convention),JAL/JALR 常用的目标 寄存器有 x1(ra,返回地址)和 x5(t0,替代链接寄存器)。对普通的函数调用, x1(ra)会被用来存放返回地址。然而,表 1 的调用约定中还定义了 x5(替代链 接寄存器...
每个PMP 区域都由一个 8 位 pmpXcfg 字段描述,与一个 64 位 pmpaddrX寄存器结合使用,该寄存器保存受保护区域的基地址。每个区域的范围取决于下一节中描述的寻址 (A) 模式。pmpXcfg 字段位于 64 位 pmpcfgY CSR中。 每个 8 位 pmpXcfg 字段包括一个读、写和执行位,外加
在RISC-V CPU架构中,寄存器和内存之间的关系是通过指令集和地址空间来定义的。寄存器是CPU内部的小容量存储单元,用于存储指令执行过程中的临时数据、操作数、中间结果和最终结果。内存则是计算机系统中的外部存储,用于存储程序代码、数据以及操作系统和其他系统软件。
PMP 配置通过一组控制寄存器(PMPCSR)和地址寄存器(PMPADDR)来实现。每个 PMP 配置段由一个配置寄存器和一个地址寄存器组成。 PMP 配置寄存器(pmpcfg):用于配置内存区域的访问权限和模式。 PMP 地址寄存器(pmpaddr):用于定义内存区域的起始地址和大小。 PMP 配置寄存器(pmpcfg)的格式 ...
x0寄存器被硬编码为了0,就是个0值寄存器。ABI名称相当于这些通用寄存器的别名,在RISC-V jf_62110620 2023-04-14 10:18:23 简单就是美——RISC-V架构的设计哲学 )指令jalr指令能够用于子程序返回指令,通过将jal指令(跳转进入子程序)保存的链接寄存器用于jalr指令的基地址寄存器,则可以从子程序返回。RISC-V架构...
RISC-V 指令格式为三操作数或者两操作数,操作数只能为立即数或寄存器; B类型分支跳转指令是在S类型基础上将立即数进行了旋转,J类型跳转指令是在U类型基础上将立即数进行了旋转,所以也可以认为RISC-V仅有4种指令类型; B型分支指令和J型跳转指令的地址需要左移1位(相当于乘以2),以获得更大的跳转范围。意味着:B型...
数据地址为:寄存器址 + 偏移量,RISC-V支持寄存器相对寻址。 # x[rd] = sext(M[x[rs1] + sext(offset)][31:0]),数据地址为x[rs1] + sext(offset) lw rd, offset(rs1) 寄存器间接寻址(可采用寄存器相对寻址模拟实现) 寄存器存放的是数据的地址而非数据本身,RISC-V并不支持寄存器间接寻址,而是采用另...