2016-02-27 398 views
0

我想寫一個比較字符串函數,但是當我從一個地址加載一個字符到一個寄存器時,我遇到了問題。錯誤是:彙編mips指令lbu

線516:運行時異常在0x00400600:地址超出範圍0x6972614d

該錯誤是在指令lbu $t4,($t5)$t5包含通過指令la $t5,name0傳遞的地址。

search_name: 

lbu $t4,($t5) 
lbu $t2,0($t6) 

beq $t2,10,search_surname 
bne $t2,$t4,loop_search 

addi $t6,$t6,1 
addi $t5,$t5,1 

j search_name 
+1

我想你應該發佈[MCVE](http://stackoverflow.com/help/mcve)。 – MikeCAT

+0

儘管我對MIPS的使用並不是非常有經驗,但我不認爲錯誤出現在代碼的這一部分。您似乎更有可能傳遞錯誤的地址,或者有非法數據導致它讀出邊界。 (考慮到不對齊的地址,後者似乎不太可能) – Dolda2000

+0

另外,如果你不介意我問,你確定'0x00400600'是'lbu'指令嗎?這個地址似乎很好地符合任何隨機指令。當然,既可能是一個誠實的巧合,也可能是程序組織,但似乎值得驗證。 – Dolda2000

回答

0

這種味道像間接錯誤。

0x6972614d是ASCII iraM,所以這看起來像你取消引用你的字符串內容的一部分。