C.FSDSP

RISC-V C.FSDSP 指令详解

指令手册C-type

将双精度浮点存储到栈指针+偏移。CSS格式,RV32DC/RV64DC。

指令语法

c.fsdsp fs2, offset(sp)
操作数说明
压缩指令仅 16 位,寄存器选择通常限制在 x8–x15。
立即数字段较窄,查看特定压缩指令的完整编码。
CD压缩指令

指令行为说明

c.fsdsp 把浮点 fs2 的 64 位双精度值存到 sp + 零扩展的 8 字节缩放偏移地址。

快速理解与检索要点

c.fsdsp 把浮点 fs2 的 64 位双精度值存到 sp + 零扩展的 8 字节缩放偏移地址。

这是 C 扩展真实 16 位访存编码,语义对应 FLD/FLW/FSD/FSW 族的浮点访存。
基址固定为 x2/sp;源浮点寄存器字段不是 f8..f15 子集。
偏移量是零扩展并按访问宽度缩放编码,不是任意字节立即数。

常见使用场景

寄存器操作

结合 «c.fsdsp f0, 16(sp) # *(sp+16) = f0» 等实际代码理解该场景。

使用前检查清单

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

容易混淆 / 常见误区

基址固定为 x2/sp;源浮点寄存器字段不是 f8..f15 子集。
偏移量是零扩展并按访问宽度缩放编码,不是任意字节立即数。

常见问题

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

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

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

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