RISC-V MCU中文社区

【分享】 关于如何创建一个浮点立即数

发表于 CM32M433R MCU 2023-05-31 12:56:39
0
1479
0

团队编号:CICC2879

团队名称:八点起床读书

 在做F指令扩展时,对于一些运算模块,难免得需要进行仿真波形验证,而在这个时候就需要用到生成立即数来进行验证。生成立即数的方法跟RV32I指令一样,如下:

 RISC-V使用I-type格式的指令和U-type格式的指令加载立即数,I-type格式包含12位立即数,U-type格式包含20位立即数,而且这20位是加载到寄存器的高20位的。所以,一条I-type指令加上一条U-type指令就可以加载32位的常量,包括32位的立即数或内存地址。有些情况下只需要一条I-type指令,或者一条U-type指令就可以了。

例如加载常量0x12345678:

lui x15,0x12345 # 首先加载常量的高20位

addi x15,x15,0x678 # 再将低12位加到高20位

而对于F寄存器,则需要另一条F指令在将S寄存器转移到F寄存器,即浮点搬运指令 FMV.W.X

该指令结构为:

1111000 00000 rs1 000 rd 1010011

通过设置合适的参数,即可将x[rs1]转移到f[rd]。

喜欢0
用户评论
szy1380

szy1380 实名认证

懒的都不写签名

积分
问答
粉丝
关注
  • RV-STAR 开发板
  • RISC-V处理器设计系列课程
  • 培养RISC-V大学土壤 共建RISC-V教育生态
RV-STAR 开发板