fsrmi

RISC-V fsrmi 伪指令详解

汇编器伪指令

RISC-V fsrmi 是访问 frm 的汇编器伪指令:fsrmi rd, imm 展开为 csrrwi rd, frm, imm;fsrmi imm 展开为 csrrwi x0, frm, imm。CSR 立即数字段为五位。

你写下的是
fsrmi rd, imm fsrmi imm
各写法对应的展开
fsrmi rd, imm
csrrwi rd, frm, imm
fsrmi imm
csrrwi x0, frm, imm

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

RISC-V Assembly Programmer's Manual 为使用 CSRRWI 访问 frm 的两种形式定义了这些写法。

两种写法的区别

形式 1
fsrmi rd, imm 展开为 csrrwi rd, frm, imm;仅在 rd 不是 x0 时读取旧 frm 值并返回到 rd。
形式 2
fsrmi imm 展开为 csrrwi x0, frm, imm;不读取 frm,也不产生 CSR 读取副作用。

汇编写法与真实指令

按页面所列的 CSRRWI 展开阅读该写法。

官方依据与阅读顺序

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

什么时候优先想到它

需要取得旧 frm 值时使用 fsrmi rd, imm,并指定非 x0 的 rd。
只写入时使用 fsrmi imm,其展开的 rd 为 x0。

容易混淆 / 常见误区

CSR 立即数字段为零扩展的五位值。
frm 是 fcsr 的位 7 至位 5;动态舍入模式值 101 至 111 为保留值。
两操作数形式也可指定 rd=x0;此时 CSRRWI 不读取 frm,也不产生 CSR 读取副作用。

常见问题

fsrmi 有哪些标准形式?

fsrmi rd, imm 和 fsrmi imm 分别展开为目的寄存器是 rd 与 x0 的 CSRRWI。两操作数形式只有在 rd 不是 x0 时才读取并返回旧 frm 值;rd=x0 时不读取 CSR。