图10 中的 AUIPC(Add Upper Immediate to PC,高位立即数加 PC)指令就 是为了移动页地址而设计的,和其他的 U-TYPE 指令一样,AUPIC 也会将其携带 的 20 位立即数作为高位,而将低 12 位置零,以生成一个完整的 32 位数。然后该 32 位数会与当前指令计数器(32 位寄存器)的值相加,并将结果存入目标寄存器 (...
除法操作 DIV和DIVU指令分别执行有符号和无符号的XLEN位整数除以XLEN位整数除法操作。REM、REMU给出了相应除法的余数,如果同时需要商和余数,代码顺序为:DIV[U] req,rs1,rs2; REM[U] rdr,rs1,rs2.因此微体系结构可以将这些融合为一个单一的除法操作,而不是执行两次分开的除法。 DIVW、DIVUW:将寄存器rs1的...
RISC-V指令集提供了在32位和64位的基础指令集“I”,任何要实现RISC-V指令集的处理器必须实现这个基本的指令集,其它的指令集都是以扩展指令集的方式实现的。除了基本扩展指令集I,还提供了M、A、F、D、C基本扩展指令集。所有的32位和64位RISC-V指令可以归类为如图3-8所示6种基本类型,每种类型opcode、func、rs...
通常,软件会让mscratch包含指向附加临时内存空间的指针,处理程序用该指针来保存其主体中将会用到的整数寄存器。在主体执行之 后,中断程序会恢复它保存到内存中的寄存器,然后再次使用mscratch和a0交换, 将两个寄存器恢复到它们在发生异常之前的值。 返回 使用mret指令返回,mret将PC设置为mepc 将mstatus的MPIE域复制到...
RISC-V 用指令组合常量,一般是一条 LUI 指令加上一条 ADDI 指令,LUI 指令加载高20位立即数,ADDI 累加低12位立即数,刚好是32位立即数;Cortex-M 从常量池加载常量,编译器将常量存储在指令的下方,然后使用 PC 间接寻址加载该常量。理论上讲,RISC-V 也可以将变量存储在常量池,然后通过 PC 间接寻址加载,但是这...
执行mret指令进入用户模式。Note:只有一组用户寄存器 (x1 - x31) 用于所有权限级别,因此应用软件负责...
从CPU的性能看,NB2 的CPU性能在Arm Cortex A55和Cortex A72之间,这在RISC-V阵营大都对比Arm Cortex M系列的当下,NB2率先向高端迈出一步。相比硬件性能,软件是限制RISC-V处理器向更高端应用突破的关键。RISC-V作为新兴的指令集,软件生态不够成熟让众多RISC-V芯片公司选择从对生态依赖不高的MCU市场切入,所以...
RISC-V有六种基本指令格式: 每个字段名称的含义: opcode(操作码):指令的基本操作,这个缩写是它惯用名称。 rd: 目的操作寄存器,用来存放操作结果。 funct3: 一个另外的操作码字段。 rs1: 第一个源操作数寄存器。 rs2: 第二个源操作数寄存器。 funct7: 一个另外的操作码字段。
单是标准指令加上扩充指令(M、A、F、D、C),仅不到140个指令就能实作出一颗完整功能的CPU,相较...