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