floating-point - 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.
解决方案
浮点寄存器的编码方式相同。处理器根据指令的性质知道是使用整数寄存器还是浮点寄存器。
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 分别在rs1和rs2之间执行单精度浮点加法、减法、乘法和除法,并将结果写入rd。
R 型格式在 2.2 “基本指令格式”中显示。图中显示rs1、rs2和rd分别是位 19 到 15、 24 到 20 和 11 到 7。
推荐阅读
- php - 显示一个完整的数字不用科学写php
- javascript - 如何在 React js 中将 onChange 输入值传递给父组件
- python-3.x - 在 python 中使用 selenium 包单击按钮后,找不到在同一页面中打开的弹出图表的元素。NoSuchElementException
- c++ - 将多维 c++ std::array 变成多维向量
- c++ - Visual Studio C++ 不能在同一解决方案或外部文件夹中包含其他目录
- python - 使用字典键创建新列
- php - 如何在控制台上显示 console.log(response)?
- swift - 无法构造委托,因为它没有可访问的初始化程序?
- c# - 如何在 editorconfig 的 file_header_template 中允许分号
- kubernetes - 通过 github 操作在 CI 管道内成功构建后强制 pod 获取最新图像 - kubernetes