首页/指令库/加载单精度浮点数
FLW

RISC-V FLW 指令详解

指令手册I-type

从内存加载一个32位单精度浮点数到浮点寄存器。

指令语法

flw rd, offset(rs1)
操作数说明
目标寄存器 rd:存放运算结果的通用寄存器。
源寄存器 rs1:第一个操作数所在的寄存器。
立即数 imm:12 位有符号立即数,符号扩展后与 rs1 进行运算。
F浮点加载

指令行为说明

FLW 使用 I-type LOAD-FP 编码,从 x[rs1] 加 12 位有符号字节偏移形成的有效地址加载 32 位单精度浮点位模式,并写入浮点寄存器 f[rd]。传输不会修改位模式或规范化 NaN payload;在 FLEN 大于 32 的实现中,写入的单精度值按 NaN-boxing 规则保存。自然对齐访问的原子性按官方 F 扩展规则保证,非对齐访问由执行环境约束。

FLW 指令解析与执行动画

展示 F 扩展浮点加载的 ISA 可见流程:解析 I-type 编码,用整数基址加 12 位偏移形成地址,并传输 32 位浮点位模式。

rd
offset
rs1
flw
,
,
执行环境
fmt=S / width=32
基址寄存器是整数 x 寄存器
fflags 不改变
31..20
19..15
14..12
11..7
6..0
000000001100
imm[11:0]
01010
rs1
010
FLW
01010
rd
0000111
LOAD-FP
执行数据路径
instruction
0x00C52507
opcode
0000111 -> LOAD-FP
funct3
010 -> 32-bit load
offset
000000001100 -> 12
rd/rs1
fa0(f10) / a0(x10)
read
a0(x10) = 0x0000000000001000
address
0x0000000000001000 + (12) = 0x000000000000100C
write
fa0(f10) = 0x40490FDB
当前步骤

Fetch:展示 32-bit I-type 编码

机器码按 I-type 字段切分;浮点访存不是 OP-FP 算术编码。

encoding: 0x00C52507
syntax : flw fa0(f10), 12(a0(x10))
result : fa0(f10) = 0x40490FDB
地址与位模式传输
base
0x0000000000001000
offset
12
address
0x000000000000100C
loaded bits
0x40490FDB

FLW 在写入浮点寄存器时按 F 扩展规则保存 32 位单精度值;RV64/FLEN>32 环境涉及 NaN-boxing。位传输本身不修改 NaN payload。

该动画只展示 RISC-V F 扩展浮点加载/存储的 ISA 可见地址计算和位模式传输;不模拟 cache、总线、异常处理器、FPU 流水线或微架构时序。

快速理解与检索要点

FLW 是 F 扩展单精度浮点加载。它用整数寄存器 rs1 加 12 位有符号字节偏移形成地址,从内存取 32 位位模式写入浮点寄存器 rd;这个传输不是浮点算术,也不使用 rm 舍入。

I-type LOAD-FP:imm[11:0]、rs1、funct3=010、rd、opcode=0000111。
有效地址 = x[rs1] + sign_extend(offset),偏移单位是字节。
FLW/FSW 不修改传输位模式;FLW 写入较宽 FLEN 寄存器时按 NaN-boxing 规则保存单精度值。

常见使用场景

浮点基本运算

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

使用前检查清单

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

容易混淆 / 常见误区

rs1 是整数基址寄存器,不是浮点寄存器;rd 才是浮点目标寄存器。
offset 是 12 位有符号字节偏移,范围 -2048 到 2047,不是浮点元素索引。
FLW 传输 32 位位模式,不会规范化 NaN payload;FLEN>32 时写入结果按 NaN-boxing 保存。
自然对齐访问才有规范保证的原子性;非对齐行为取决于执行环境。

常见问题

FLW 的 rs1 是浮点寄存器吗?

不是。rs1 是整数寄存器,用来提供内存基址;rd 是浮点目标寄存器。

FLW 会按 rm 舍入吗?

不会。FLW 是位模式加载,不是浮点算术操作;传输不会规范化 NaN payload。