MIPS,添加双精度浮点数,得到不正确的结果

时间:2013-08-12 01:33:53

标签: assembly floating-point mips

我正在编写一个MIPS程序,它分配两个或多个双精度浮点数的多维数组并将它们加在一起,但似乎我没有理解添加双精度浮点数的概念。

我已经知道在使用双精度时我必须使用$ f寄存器,我写了这个简单的程序而且我不明白它为什么不能正常工作。

    .text
main:
li  $v0,6 # getting first number
syscall
mov.d   $f4,$f0

mov.d   $f12,$f4
li  $v0,2
syscall
li  $a0,10 # new line
li  $v0,11
syscall

li  $v0,6 # getting second number
syscall
mov.d   $f6,$f0

mov.d   $f12,$f6
li  $v0,2
syscall
li  $a0,10 # new line
li  $v0,11
syscall

add.d   $f12,$f4,$f6 # add them together and show the result
li  $v0,2
syscall

li  $v0,10
syscall
    .data

示例运行:

**** user input : 1.22
1.22
**** user input : 4.66
4.66
-4.525653E-39
-- program is finished running --

谢谢。

1 个答案:

答案 0 :(得分:2)

Syscall 6读取单精度浮点数。如果您要添加双精度数,请先将单个精度值转换为使用cvt.d.s的双精度值,或者切换到使用系统调用7(读取双精度数)和3(打印双精度数)。