我已經凝結了我的問題下面的代碼:的Mips雙師傳回無限
.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所以它可能是容易的。 感謝您的任何答案!
它看起來像你在德乙一個錯字:div.d $ F12,F12 $,$ F30。你永遠不會顯示$ f12被初始化,我懷疑它包含零。 – Durandal
不應該包含'div.d $ f12,$ f2,$ f30'之後的東西嗎?或者打電話打印時它會被覆蓋? – Nicola
「MTC1」指令不會將整數轉換爲雙精度型。移動後您需要使用'CVT.D.W'。 – markgz