floating-point - RISCV-Boom中浮点寄存器中的值是什么格式的?
问题描述
我正在研究 Boomv3 中浮点指令的执行过程。我从一个简单的fadd.s
指令开始。我添加了代码来输出 Boom/src/main/scala/exu/execution-units/functional-unit.scala 中 FPUUnit 类中寄存器的值。但输出结果并不完全符合浮点数的IEEE754。
我添加的代码是:
when(io.req.bits.uop.uopc === uopFADD_S ){
printf("------------------FPUUnit------------------------------\n")
printf("rs1 :%x, rs2 :%x \n",io.req.bits.rs1_data, io.req.bits.rs2_data)
printf("io.req.bits.uop %d\n", io.req.bits.uop.uopc)
printf("io.resp.bits.uop %d\n", io.req.bits.uop.uopc)
printf("io.resp.bits.data %x\n", io.resp.bits.data )
printf("\n\n")
}
看下面两条指令,指令005470d3中f5的值为0,f8的值为1.5。
10314: d01072d3 fcvt.s.wu f5,x0
10318: 005470d3 fadd.s f1,f8,f5
Boom 的输出是:
------------------FPUUnit------------------------- -----
rs1 :1f01fffff00400000, rs2 :1ffefffff00000000
io.req.bits.uop.inst 005470d3
io.req.bits.uop 87
io.resp.bits.uop 87
io.resp.bits.data 1ffefffff00000000
为什么 rs1 和 rs2 中的值不完全对应 0 和 1.5?
谢谢!
解决方案
推荐阅读
- python - 来自seaborn的颜色强度错误
- sql - SQL - 将逗号分隔的字符串转换为单独的行后更新表
- erlang - 当我将 ets 表转换为 Erlang 中的列表时,如何减少进程的内存使用量?
- spring - PathVariable 中的正则表达式无法正常工作 Spring
- git - 通过 cPanel 添加私有 git 仓库
- javascript - 如何延迟函数或如何在绘图中使用 settimout
- c# - Linq 错误输入字符串的格式不正确。System.Exception {System.FormatException}
- hive - 配置具有非空约束的 Glue 目录
- java - 如何在 Spring Boot @Async 中使用 ForkJoinPool?
- mysql - 我通过一些列的值来获取行