2012-11-21 40 views
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 

回答

0

您可能正在執行一個未對齊異常,執行swc1 $f1,0($t0)。 指令swc1需要第二個參數爲在字邊界對齊的有效內存地址。這意味着這個有效內存地址的兩個最低有效位(在您的情況下,地址存儲在$t0)需要爲零。

您發佈不顯示的$s0初始化這可能有兩個最顯著位中的至少一個與1

要解決你的代碼,確保$s0開始在零這些位的代碼所以swc1中使用的有效內存地址是字對齊的。

如果$s0初始化與la $s0, label做了你可能想使用.align 2指令時,你聲明的緩衝區來存儲數據,例如:

label: .align 2 
     .space ...