0
爲什麼這段代碼在存儲浮點數時發生異常。我無法弄清楚這個問題。以下是代碼:存儲浮點數的錯誤是MIPS彙編
li $t1,0
Loop:
add $t0,$t1,$s0
li $v0,6
syscall
mov.s $f1,$f0
swc1 $f1,0($t0)
addi $t1,$t1,4
beq $t1,20,Mult
j Loop
爲什麼這段代碼在存儲浮點數時發生異常。我無法弄清楚這個問題。以下是代碼:存儲浮點數的錯誤是MIPS彙編
li $t1,0
Loop:
add $t0,$t1,$s0
li $v0,6
syscall
mov.s $f1,$f0
swc1 $f1,0($t0)
addi $t1,$t1,4
beq $t1,20,Mult
j Loop
您可能正在執行一個未對齊異常,執行swc1 $f1,0($t0)
。 指令swc1
需要第二個參數爲在字邊界對齊的有效內存地址。這意味着這個有效內存地址的兩個最低有效位(在您的情況下,地址存儲在$t0
)需要爲零。
您發佈不顯示的$s0
初始化這可能有兩個最顯著位中的至少一個與1
要解決你的代碼,確保$s0
開始在零這些位的代碼所以swc1
中使用的有效內存地址是字對齊的。
如果$s0
初始化與la $s0, label
做了你可能想使用.align 2
指令時,你聲明的緩衝區來存儲數據,例如:
label: .align 2
.space ...