csrr

RISC-V csrr 伪指令详解

汇编器伪指令

RISC-V csrr 伪指令的 csrr 展开为 CSRRS rd, csr, x0,用于读取 CSR。CSRRS 将 CSR 值零扩展至 XLEN 后写入 rd;rs1 为 x0 时不写 CSR,但仍会读取并可能产生读取副作用。

你写下的是
csrr rd, csr
常见真实展开
csrrs rd, csr, x0

这条伪指令到底在帮你省什么

csrr 用 csrrs rd, csr, x0 表示读取 CSR。

展开过程怎么理解

步骤 1
RISC-V Assembly Programmer's Manual 将 csrr rd, csr 展开为 csrrs rd, csr, x0。
步骤 2
CSRRS 读取 CSR,将其值零扩展至 XLEN 并写入 rd。

汇编写法与真实指令

该汇编写法对应 RISC-V Assembly Programmer's Manual 的 csrr,即 csrrs rd, csr, x0;真实语义由 CSRRS 定义。

官方依据与阅读顺序

本页把伪指令当作汇编器层面的别名或宏来解释:先看它会展开成哪些真实指令,再回到官方 ISA 手册理解真实指令的行为。涉及 ABI、重定位或链接器松弛时,以 psABI 文档为准。

容易混淆 / 常见误区

csrr 的 CSRRS 展开仍会读取所寻址的 CSR 并可能产生读取副作用,即使 rs1=x0 时不会写 CSR。

常见问题

csrr 展开为什么?

RISC-V Assembly Programmer's Manual 给出 csrr rd, csr 展开为 csrrs rd, csr, x0。