2013-10-04 42 views
0

我試圖在內存中使用mips32順序地存儲數字0到10。這裏是我的代碼:Mips 32將序列數組存儲到內存

addi $s2, $zero, 10 
addi $s1, $zero, 0 
addi $t0, $zero, 0 
addi $s6, $zero, 10 
L1: 
    beq $s1, $s2, exit 
    sll $t0, $s1, 2   #multiply by the size of a word to get the cur address of $s6 
    sw $t0, 0($s6)    
    addi $s1, $s1, 1 
    j L1 

exit: 

我得到一個錯誤與sw $t0, 0($s6)有什麼不對存儲在這個內存的開始?

回答

1

除非您使用裸機運行,否則OS(或模擬器)爲您的程序提供虛擬內存。您通常不會獲得分配給您程序的整個地址範圍,您需要向操作系統詢問內存塊 - 可以通過系統調用或通過二進制格式本身,例如通過預留空間.bss.data部分。

PS .:可用地址範圍很少包含第一頁,因此可以輕鬆地捕獲空指針。