除法操作 DIV和DIVU指令分别执行有符号和无符号的XLEN位整数除以XLEN位整数除法操作。REM、REMU给出了相应除法的余数,如果同时需要商和余数,代码顺序为:DIV[U] req,rs1,rs2; REM[U] rdr,rs1,rs2.因此微体系结构可以将这些融合为一个单一的除法操作,而不是执行两次分开的除法。 DIVW、DIVUW:将寄存器rs1的...
图10 中的 AUIPC(Add Upper Immediate to PC,高位立即数加 PC)指令就 是为了移动页地址而设计的,和其他的 U-TYPE 指令一样,AUPIC 也会将其携带 的 20 位立即数作为高位,而将低 12 位置零,以生成一个完整的 32 位数。然后该 32 位数会与当前指令计数器(32 位寄存器)的值相加,并将结果存入目标寄存器 (...
通常,软件会让mscratch包含指向附加临时内存空间的指针,处理程序用该指针来保存其主体中将会用到的整数寄存器。在主体执行之 后,中断程序会恢复它保存到内存中的寄存器,然后再次使用mscratch和a0交换, 将两个寄存器恢复到它们在发生异常之前的值。 返回 使用mret指令返回,mret将PC设置为mepc 将mstatus的MPIE域复制到...
compliance test方法:和DIV类似。 3:MUL指令:执行rs1,rs2的乘法操作,忽略算数溢出,即只将低XLEN位的值写入rd寄存器。 compliance test方法:和DIV类似。 4:MULH指令:执行rs1,rs2的乘法操作,但在执行操作前,将rs1,rs2分别进行2*XLEN位的有符号数扩展,然后将结果的高XLEN位写入rd寄存器。 compliance test方法:...
RISC-V 用指令组合常量,一般是一条 LUI 指令加上一条 ADDI 指令,LUI 指令加载高20位立即数,ADDI 累加低12位立即数,刚好是32位立即数;Cortex-M 从常量池加载常量,编译器将常量存储在指令的下方,然后使用 PC 间接寻址加载该常量。理论上讲,RISC-V 也可以将变量存储在常量池,然后通过 PC 间接寻址加载,但是这...
RISC-V 特权架构规范定义了三个特权级别:机器模式(M 模式)、管理员模式(S 模式)和用户模式(U 模式)。这些特权级别提供了一种隔离操作系统内核、管理程序和用户应用程序的机制,从而确保了系统的安全性和稳定性。RISC-V还支持基于多级页表方案的虚拟内存系统,从而实现高效的内存管理和保护。
RISC-V有六种基本指令格式: 每个字段名称的含义: opcode(操作码):指令的基本操作,这个缩写是它惯用名称。 rd: 目的操作寄存器,用来存放操作结果。 funct3: 一个另外的操作码字段。 rs1: 第一个源操作数寄存器。 rs2: 第二个源操作数寄存器。 funct7: 一个另外的操作码字段。
6.Align 中-mstrict-align -mno-strict-align 取决于处理器是否支持内存的非对齐访问。 7.Small data limit 在某些目标上将小于n字节的全局和静态变量放进一个特殊的段。 【优化等级】主要是配置GCC的优化选项,想要添加其他优化选项可以写在下方other optimization flags中。
1. 指令集 1.1 指令集 指令集是一个CPU的基石,要实现CPU 计算和控制功能,就必须定义好一系列与硬件电路相匹配的指令系统. 指令就是我们交代CPU 要执行的操作,指令集就可以简单理解为指令的集合。我们把cpu 能够识别的指令汇总在一起就构成了一个指令集。