C.FSW

RISC-V C.FSW 指令详解

指令手册CS-format

将单精度浮点存储到内存。CS格式,RV32FC。

指令语法

c.fsw fs2', offset(rs1')
操作数说明
本指令为 CS-format 格式,请根据汇编语法确认各操作数位置。
CF压缩指令

指令行为说明

c.fsw 在 RV32FC 中把 fs2' 的 32 位单精度值存到 rs1' + 零扩展的 4 字节缩放偏移地址。

C.FSW 指令解析与执行动画

只展示手册定义的 16 位字段、操作数和 ISA 可见结果;不模拟流水线、缓存、时序或实现的内存异常处理。

c.fsw,(rs1')
执行环境

存储传输 32 位;若 FLEN 更宽,FSW 会忽略 f 寄存器高位并传输低 32 位,FSD 传输低 64 位。传输不修改 NaN 载荷。

自然对齐访问不会引发 address-misaligned exception;非自然对齐访问是否完成或发生 address-misaligned/access-fault exception 由 EEI 定义。此控件只显示所选结果分支。

x10 = 0x00001000;f8 的低 32 位 = 0x3F800000。 -> 0x00001010 -> M[0x00001010] = 0x3F800000。
16 位编码字段
15..13
funct3
111
12..10
uimm[5:3]
010
9..7
rs1'
010
6..5
uimm[2|6]
00
4..2
fs2'
000
1..0
op
00
执行数据路径
x10 = 0x00001000;f8 的低 32 位 = 0x3F800000。
0x00001010 = 0x00001000 + 16
M[0x00001010] <- 0x3F800000
尚未提交架构状态。

快速理解与检索要点

c.fsw 在 RV32FC 中把 fs2' 的 32 位单精度值存到 rs1' + 零扩展的 4 字节缩放偏移地址。

这是 C 扩展真实 16 位访存编码,语义对应 FLD/FLW/FSD/FSW 族的浮点访存。
C.FSW 只定义在 RV32FC;RV64C 中相同编码用于 C.SD。
偏移量是零扩展并按访问宽度缩放编码,不是任意字节立即数。

常见使用场景

浮点基本运算

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

使用前检查清单

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

容易混淆 / 常见误区

C.FSW 只定义在 RV32FC;RV64C 中相同编码用于 C.SD。
偏移量是零扩展并按访问宽度缩放编码,不是任意字节立即数。

常见问题

c.fsw 的偏移单位是什么?

编码中的立即数按访问宽度缩放:双精度按 8 字节,单精度按 4 字节。

c.fsw 是否需要浮点扩展?

需要相应浮点扩展:双精度形式需要 D,单精度形式需要 F,并且都需要 C。