Convert Integer to Double in MIPS

2020-03-02 07:44发布

问题:

I want to divide two values that are in $tn registers.

I have to divide these two values to get a double result but the function div only returns the integer part of that division can anyone help out?

Do i need to convert $t1 and $t2 to $f0 and $f2?

How do i do that?

li $t1,2 
li $t2,5 

div $f0,$t2,$t1

This gives me an error because it expects a $tn value not a $fn value...

回答1:

You have to move and convert the integer stored in a general purpose register to floating point or double register.

Assuming your number is stored in $a1, To convert to a double pair ($f12, $f13) you have to issue:

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

And to convert it to a single precision float ($f12) you'd do:

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