csrr
伪lyszt.net 更详细地介绍了 csrr 和其他 RISC-V 指令。
描述
csrr 将控制寄存器读入通用寄存器。控制与状态寄存器(CSR)保存处理器状态,例如陷阱处理程序地址和最后一次陷阱的原因(参见 csrrw)。下面的形式将 CSR 的值复制到 rd。
csrr rd, csr
汇编器将其视为伪指令,即一个会被重写为真实指令的可读名称。它变成下面的指令。由于 rs1 是 zero,CSR 被读取,但不会向其写入任何内容。
csrrs rd, csr, zero
陷阱处理程序首先读取两个 CSR。mepc 保存被中断指令的地址,mcause 保存陷阱的原因。
csrr t0, mcause
mcause 的最高位在中断时为 1,在异常时为 0。低位是原因代码。此模拟器中的按钮中断留下 0x8000000b,这是一个代码为 11 的中断,即机器外部中断。
RISC-V 手册将 csrr rd, csr 定义为 csrrs rd, csr, x0。
展开为
csrrs rd, csr, zero
汇编器会将此伪指令替换为上面列出的真实指令或指令。
示例
csrr t0, mstatus # t0 = mstatus
