在MIPS中将整数转换为双精度

7
我想要除以存在$tn寄存器中的两个值。
我必须将这两个值相除以得到一个双精度结果,但是函数div仅返回该除法的整数部分,有谁可以帮忙吗?
我需要将$t1$t2转换为$f0$f2吗?
如何进行转换?
li $t1,2 
li $t2,5 

div $f0,$t2,$t1

我得到了一个错误,因为它期望的是$tn的值而不是$fn的值...

1个回答

17

您需要将通用寄存器中存储的整数移动并转换为浮点寄存器或双精度寄存器。

假设您的数字存储在$a1中,要转换为双精度对($f12, $f13),您需要执行以下操作:

  mtc1.d $a1, $f12
  cvt.d.w $f12, $f12

如果要将其转换为单精度浮点数 ($f12),您可以执行以下操作:

  mtc1 $a1, $f12
  cvt.s.w $f12, $f12

那么您可以使用 div.ddiv.s 进行浮点数除法运算,得到一个浮点数结果。

这个参考链接帮助我更好地理解了这个:https://www.cs.tcd.ie/~waldroj/itral/spim_ref.html - Brian

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接