首页/指令库/存储单精度浮点数
FSW

RISC-V FSW 指令详解

指令手册S-type

将浮点寄存器中的32位单精度浮点值存储到内存。

指令语法

fsw rs2, offset(rs1)
操作数说明
源寄存器 rs2:要写入内存的数据寄存器。
基址寄存器 rs1:内存访问的基地址。
立即数偏移:12 位有符号偏移量,与 rs1 相加得到最终地址。
F浮点存储

指令编码

31..25
imm[11:5]
24..20
rs2
19..15
rs1
14..12
funct3
11..7
imm[4:0]
6..0
opcode

FSW 使用 opcode 0100111(0x27)、funct3 010。rs1 保存基地址,rs2 保存存储数据,12 位立即数(拆分在 imm[11:5] 和 imm[4:0])提供偏移量。

格式: S-type
opcode: 0100111 (0x27)
funct3: 010 (0x2)

指令行为说明

FSW 指令使用基地址+偏移量寻址模式,将浮点寄存器 rs2 中的单精度浮点值存储到内存。有效地址为 rs1 中的基地址加上12位有符号字节偏移量。FSW 仅在有效地址自然对齐时保证原子性执行。传输中比特位不被修改。

快速理解与检索要点

FSW 是单精度浮点存储指令,用整数基址加 12 位有符号偏移形成地址,并把 f[rs2] 的 32 位单精度位模式写入内存。

FSW 从浮点寄存器 f[rs2] 取低 32 位单精度位模式并存入内存。
FLW/FSW 传输位模式,不会规范化 NaN payload;FSW 不写浮点寄存器,也不存在加载时的 NaN-boxing。

常见使用场景

浮点基本运算

结合 «fsw f0, 0(x10)» 等实际代码理解该场景。

使用前检查清单

语法检查
  • 确认当前指令格式为 S-type。
  • 确认操作数排列顺序与示例一致。
语义检查
  • 确认目标寄存器用途和调用约定兼容。
  • 确认该指令不是伪指令展开后的底层形式。

容易混淆 / 常见误区

非对齐地址可能导致陷阱或性能下降
仅存储FP寄存器低32位;RV64中FP寄存器高32位(NaN-box)被忽略
偏移量仅±2KB范围

常见问题

地址寄存器是浮点寄存器吗?

不是。基址 rs1 是整数寄存器,数据源/目的才是浮点寄存器。

偏移范围是多少?

偏移是 12 位有符号立即数,编码范围为 -2048 到 2047 字节。