首页 > 解决方案 > How are rs1 & rs2 fields for floating point registers (f0-f31) encoded in RISC-V Instructions?

问题描述

The Integer register encoding corresponds to their numeric names (0-31, for x0-x31). What is this encoding for f0-f31?

I am trying to write a disassembler.

标签: floating-pointdisassemblyriscv

解决方案


浮点寄存器的编码方式相同。处理器根据指令的性质知道是使用整数寄存器还是浮点寄存器。

RISC-V 规范位于https://riscv.org/specifications/。作为一种指令的示例,在RISC-V 指令集手册,第一卷:用户级 ISA,2.2 版,2017 年 5 月 7 日,第 8.6 节,“单精度浮点计算指令”中说:

带有一个或两个源操作数的浮点算术指令使用带有 OP-FP 主操作码的 R 型格式。FADD.S、FSUB.S、FMUL.S 和 FDIV.S 分别在rs1rs2之间执行单精度浮点加法、减法、乘法和除法,并将结果写入rd

R 型格式在 2.2 “基本指令格式”中显示。图中显示rs1rs2rd分别是位 19 到 15、 24 到 20 和 11 到 7。


推荐阅读