csrr伪

csrr

伪
RISC-V 汇编 参考

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