我的 MIPS 實作,遍歷字串:我不斷得到:
- 例外發生在 PC=0x10010010
- 讀取的文本中的錯誤地址:0x10010010
不確定為什么會發生這種情況,我嘗試了除錯和步進。如果有人確切知道這段代碼有什么問題,請回答。我繼續嘗試除錯..
是的,這是全部代碼,您可以在 QtSpim 中隨意運行它。
.data
STR_str:
.asciiz "Cow, Bird, Beer"
.text
loop_over_strings:
addi $sp, $sp, -4
sw $ra, 0($sp)
sw $a1, 8($sp)
loop:
sw $a0, 4($sp)
lb $t0, 0($a0)
beqz $t0, end_loop
jalr $a1
lw $a0, 4($sp)
lw $a1, 8($sp)
addi $a0, $a0, 1
j loop
end_loop:
lw $ra, 0($sp)
addi $sp, $sp, 4
jr $ra
.text
.globl main
main:
addi $sp, $sp, -4 # PUSH return address
sw $ra, 0($sp)
la $a0, STR_str
la $a1, ascii
jal loop_over_strings
lw $ra, 0($sp) # POP return address
addi $sp, $sp, 4
jr $ra
uj5u.com熱心網友回復:
在 中loop_over_strings,您分配了 4 個位元組的堆疊空間,但它使用了 12 個位元組,因此某些內容將被覆寫 — 被覆寫的內容可能是其他人的堆疊回傳地址。
uj5u.com熱心網友回復:
您已在該.data部分中放置了一些代碼。它需要在.text部分中。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/313719.html
