2012-12-08 3 views
0

$ ra에 대해 배우려고합니다. 따라서 원하는 출력은 mainfunction1, main1로 돌아 오는 function1, main 마무리로 mainfunction1main입니다. 하지만 어떤 이유로 나는 mainfunction1 mainfunction1을 인쇄하는 무한 루프를 얻고 있습니다 ...... "내가 뭘 잘못하고 있니?간단한 밉에서 무한 루프

.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가 말했듯이, 메인의 끝에서 프로그램을 종료해야합니다. 당신이해야 할 모든과 같이, 메인의 끝 부분에 두 줄을 추가 할 수 있습니다 : ((10)의 코드가 있음) exit 시스템 호출을

main: 
    # ... previous stuff 

    li $v0, 10                                        
    syscall 

이로드 및 실행

2

메인의 끝에서 돌아 가야합니다. 순간에 다시 기능 1로 빠져 나옵니다. 다시 메인으로 돌아간 다음 다시 쓰러 질 것입니다.