MIPS双点

MIPS双点,mips,mips32,mips64,Mips,Mips32,Mips64,我正在编辑这个程序,所以它将以双点精度格式打印值。我被告知用两个词来定义双精度格式的数字。然而,这是行不通的。我得到的结果是0.0,0.0,0.0,0.0。我做错了什么?任何帮助都将不胜感激!谢谢 .data ZERO: .double 0 ONE: .double 1 POSITIVE_MIN_DBL: .word

我正在编辑这个程序,所以它将以双点精度格式打印值。我被告知用两个词来定义双精度格式的数字。然而,这是行不通的。我得到的结果是0.0,0.0,0.0,0.0。我做错了什么?任何帮助都将不胜感激!谢谢

.data
ZERO:                                        .double   0
ONE:                                         .double  1

POSITIVE_MIN_DBL:       .word   0x00000000   0x00100000   #2.2250738585072014 E -308
LARGEST:                   .word  0x000000 0x7f7fffff
POSITIVE_MIN:                      .word 0x00000000 0x00800000    # -3.4028235E38
POSITIVE_DENOR_MIN:      .word 0x00000000 0x00000001    # denormal min, +1.4E-45

NL:                 .asciiz   "\n"

.text
l.d   $f0,  ZERO
l.d   $f2,  ONE
div.d $f12, $f0,  $f0    # f12 = 0/0 = NaN  
jal   printFloat
div.d $f12, $f2,  $f0    # f12 = 2/0 = +infinity
jal   printFloat
l.d   $f12,   LARGEST
jal   printFloat
l.d   $f12,   POSITIVE_MIN
jal   printFloat
l.d    $f12,   POSITIVE_DENOR_MIN
jal   printFloat
j     exit

printFloat:
li    $v0,    2
syscall
la    $a0,  NL
li    $v0,    4
syscall
jr    $ra

exit: 

您使用了错误的系统调用

系统调用2是
print\u float
。您需要的是系统调用3(
print\u double


还有,我不知道你是怎么想出这些十六进制值的。无论如何,它们与您评论中的值不匹配。例如,
-3.4028235e38
应该是
0xc7effffe54daff8
,而不是
0x0080000000000000
0x0080000000000000
应该是
2.8480945388892180e-306