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。