2012-12-08 64 views
0

我想了解有關$ ra,所以我想要的輸出是「mainfunction1main」,通過主要調用function1,function1返回到main,並完成主要。但由於某種原因,我得到一個無限循環打印「mainfunction1mainfunction1 ......」我做錯了什麼?無限循環簡單mips

.data 
mainstring: .asciiz "main" 
string1: .asciiz "function1" 
string2: .asciiz "function2" 
string3: .asciiz "function3" 

.text 

main: la $a0,mainstring 
     li $v0, 4 
     syscall 

     jal function1 

     la $a0, mainstring 
     syscall 

function1: la $a0, string1 
      syscall 
      jr $ra 

回答

2

就像JasonD所說的,你需要在主結束時退出你的程序。所有你需要做的是在主要的末尾添加兩行,像這樣:

main: 
    # ... previous stuff 

    li $v0, 10                                        
    syscall 

這將加載並運行exit系統調用(其中有10碼)

2

您需要在主結束時返回。此刻,你只需再次通過function1,它將跳回到main,然後再次通過,等等。