在spim中将两个浮点数相乘

时间:2012-05-03 15:57:01

标签: spim

我想在spim中编写一个小程序来计算圆周长,并从用户读取radius的值...这里是代码

    sw $s0, p2
l.s $f6 ,p2
li.s $f2 ,3.4

mul.s $f8, $f2, $f6

s0是从用户输入的半径值 .data节中的p float变量

执行程序后,我在寄存器f2,f6,f8中有这些值(当s0 = 3时):

FP2 = 4059999a
FP6 = 00000003
FP8 = 0000000a

结果是真的吗?如果确实为什么f8 10中的值不是10.2?

1 个答案:

答案 0 :(得分:0)

<00> 0000000a是浮点数的十六进制表示。它并不意味着“10”,它意味着1.4e-44。

问题是你没有正确地将$ s0中的整数转换为浮点数。考虑$ s0 = 3的情况。对“sw $ s0,p2”的调用只是将位0x00000003放入存储单元p2。你对l.s“$ f6,p2”的调用将这些相同的位放在$ f6中。但是,0x00000003并不意味着“3”作为浮点数,而是4.2x10-45。

相关问题