1

我正在编写一个 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 --

谢谢你。

4

1 回答 1

2

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

于 2013-08-12T07:17:49.523 回答