各指令的 funct3 和 opcode 值 CSRRW(CSR Read and Write) funct3:001 opcode:1110011(0x73) CSRRS(CSR Read and Set) funct3:010 opcode:1110011(0x73) CSRRC(CSR Read and Clear) funct3:011 opcode:1110011(0x73) CSRRWI(CSR Read and Write Immediate) funct3:101 opcode:1110011(0x73) CSRRSI(C...
csrr,读取一个 CSR 的值到通用寄存器。如:csrr t0, mstatus,读取mstatus的值到t0中。 csrw,把一个通用寄存器中的值写入 CSR 中。如:csrw mstatus, t0,将t0的值写入mstatus。 csrs,把 CSR 中指定的 bit 置 1。如:csrsi mstatus, (1 << 2),将mstatus的右起第 3 位置 1。 csrc,把 CSR 中指定...
伪指令(Pesudoinstruction), RV32I and RV64I. 对于x[rs1]中每一个为 1 的位,把控制状态寄存器 csr 的的对应位清零,等同于 csrrc x0, csr, rs1. csrr 读取一个 CSR 的值到通用寄存器。 如:csrr t0, mstatus,读取 mstatus 的值到 t0 中。 csrs ? 把CSR 中指定的 bit 置 1。 如:csrsi...
控制转移指令 RISC-V 中的转移控制指令(Control Transfer Instructions)主要包括以下两类: (1)无条件跳转(Unconditional Jump)。 (2)有条件跳转(Conditional Branches)。 不过和其他指令集相比,RISC-V 的跳转指令设计得非常有特色: (1)RISC-V 中并没有专门的函数调用指令,函数的调用是通过设置跳 转指令中的寄存器...
对于控制状态寄存器指令 (csrrc、csrrs、csrrw、csrrci、csrrsi、csrrwi),使我们可以轻松地访问一些程序性能计数器。对于这些 64 位计数器, 我们一次可以读取 32位。这些计数器包括了系统时间, 时钟周期以及执行的指令数目。 ecall 指令用于向运行时环境发出请求,例如系统调用。调试器使用 ebreak 指令将控制转移到调...
RV32I杂项控制状态(Constrol Status)寄存器的相关指令csrrc, csrrs, csrrw, csrrci, csrrsi, csrr...
csrrwi(CSR Read and Write Immediate): 格式:csrrwi rd, csr, zimm 作用:将控制和状态寄存器(CSR)csr的当前值读取到寄存器rd中,并将立即数zimm写入到 CSRcsr。 示例汇编代码: csrrwi x9, mstatus, 5 csrrsi(CSR Read and Set Immediate): 格式:csrrsi rd, csr, zimm ...
S型指令 R型指令 B型指令 J型指令 RV32I基本指令集 说明:为了展示指令之间的层次结构,在这里使用了多级无序列表,每个指令后的括号即该指令的英文全称,方便理解相似指令在不同环境下的运用,而大写部分则是指令缩写所提取的字母,另外划有删除线代表本身不存在但具有分支应用的指令;后续也可能会画一个树表作为补充。
csrrs指令用于读取一个CSR的值到通用寄存器,然后把该CSR中指定的bit置1。csrrc指令用于读取一个CSR的值到通用寄存器,然后把该CSR中指定的bit清零。所有这些指令都有R格式和I格式,I格式的指令名需要在R格式的指令名之后附加字母i,如R格式指令csrr对应的I格式指令为csrri。