Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/assembly/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Assembly MIPS,添加双精度浮点,得到不正确的结果_Assembly_Floating Point_Mips - Fatal编程技术网

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

Assembly MIPS,添加双精度浮点,得到不正确的结果,assembly,floating-point,mips,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,

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

谢谢。

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

您的
syscall
调用是否保留
$f4
$f6
中的值?@GregHewgill Yes。我刚刚检查了$f4和$f6中的值是否正确。我的add.d应该有问题,我不明白那是什么。你能在
add.d
指令之后检查
$f12
中的值吗?检查该选项至少可以让您知道问题是在添加中还是在输出中。@GregHewgill我检查的问题不是来自输出,而是来自添加。请看我的屏幕截图。好的,在数字明显的地方用更简单的输入试试:1+2=?实际上我刚刚用add.s$f12,$f4,$f6 add.s$f13,$f5,$f6而不是add.d$f12,$f4,$f6解决了这个问题,我得到了双精度,但我不明白为什么。@Hooman请确保您的测试用例包含可以区分正确执行的32位浮点加法和正确执行的64位浮点加法的加法。有一种风险是,您已经切换到一致地执行32位加法,这将在许多情况下给出与一致地执行64位加法类似的答案,特别是当您只显示结果的几个数字时。@Michael Thank Man。。。完美的