Я свел свою проблему к следующему коду:
.data
newline: .asciiz "\n"
.text
.globl main
main:
li $t0, 4
li $t1, 16
mtc1 $t0, $f2 # Two integers get stored as floats
mtc1 $t1, $f30
div.d $f12, $f2, $f30
li $v0, 3
syscall # First division works, returns 0.25
la $a0, newline
li $v0, 4
syscall # prints new line
div.d $f12, $f12, $f30
li $v0, 3
syscall # Second division doesn't work as expected, returns Infinity
Выход:
0.25
Infinity
Почему это? Я ожидаю, что 0.25/16
будет ~ 0.015625
вместо Infinity
.
Первое значение $f12: 0x3fd0000000000000 Второе значение $f12:0x7ff0000000000000
Я относительно новичок в MIPS, так что это может быть что-то простое. Спасибо за любые ответы!
MTC1
не преобразует целое число в двойное. Вам нужно использоватьCVT.D.W
после перемещения. - person markgz   schedule 12.06.2014syscall
и больше не содержат значений, которые, по вашему мнению, должны... - person twalberg   schedule 12.06.2014