基础指令
算术指令:ADD, SUB, MUL, DIV
逻辑指令:AND, OR, XOR
移位指令:SLL, SRL, SRA
比较指令:SLT, SLTU
加载和存储指令:LW, SW, LH, SH, LB, SB
控制流指令:JAL, JALR, BEQ, BNE, BLT, BGE
特权指令集合
比如读写csr的指令等
csr 访问指令:
| imm | rs1 | funct3 | rd | opcode | 低位, 二进制
字段描述:
31 - 20:imm[11:0](12 位立即数)
功能:表示 CSR 的地址,用于指定要访问的控制和状态寄存器。
19 - 15:rs1(5 位源寄存器 1)
功能:源寄存器 1 的编号,指定要读取的寄存器。
14 - 12:funct3(3 位功能码)子类型的区分
功能:用于区分不同的 CSR 指令,如读写、读设置、读清除等。
11 - 7:rd(5 位目标寄存器)2的5次方,正好是32个通用寄存器
功能:目标寄存器的编号,指定要写入的寄存器。
6 - 0:opcode(7 位操作码)用来区分是否是csr的指令
功能:用于识别 CSR 指令类型,固定为 1110011(0x73)。
各指令的 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(CSR Read and Set Immediate)
funct3:110
opcode:1110011(0x73)
CSRRCI(CSR Read and Clear Immediate)
funct3:111
opcode:1110011(0x73)
读取 mstatus 寄存器并写入新值
csrrw x1, mstatus, x2 # 读取 mstatus 寄存器的值到 x1,同时将 x2 的值写入 mstatus
读取 mstatus 寄存器并设置特定位
csrrs x1, mstatus, x2 # 读取 mstatus 寄存器的值到 x1,同时将 x2 的值与 mstatus 进行按位或操作,并写回 mstatus
读取 mstatus 寄存器并清除特定位
csrrc x1, mstatus, x2 # 读取 mstatus 寄存器的值到 x1,同时将 x2 的值与 mstatus 进行按位与非操作,并写回 mstatus
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。