沒有在我的代碼不尋常的行爲,我只是想不通錯誤的S0寄存器中,而打印
.data
hello: .asciiz "Hello\n"
msg1: .asciiz "lol"
msg2: .asciiz "msg2"
.text
main:
la $a0, hello
jal print
la $a0, msg1
jal create
move $s1, $v0 #s0
move $a0, $v0
jal print
la $a0, msg2
jal create
move $s2, $v0 #s1
move $a0, $v0
jal print
move $a0, $s1 #s0
move $a1, $s2 #s1
jal append
move $a0, $v0
jal print
li $v0, 10
syscall
在一個評論,如果我開關S1與S0和S2與S1線,我的代碼無法按照它的方式工作。無論我使用的其他保存寄存器的索引是什麼,代碼的行爲都很好,但如果我使用0,程序就會出錯。
'我的程序出錯'不是問題描述。 – EJP
查看http://stackoverflow.com/questions/6077852/mips-is-it-elegant-to-use-s0-etc-reginsters-inside-the-procedure-and-restore爲什麼你不應該修改S0或任何S寄存器。 這是一個運氣問題使用S1或S2不是問題。 –
由於您沒有包含您調用的任何子例程('create','print','append'),因此您向我們顯示的代碼不足以重現此問題。 – Michael