2013-09-10 4 views
1

내가 MIPS에서 다음 C 프로그램을 작성하고 싶은 말 : MIPS의 main 함수에서 값을 반환하려면 어떻게해야합니까?

main: ADDI $v0, $zero, 5  # $v0 = 5 
     JR $ra     # return from main() 

가 나는 '잘못된 프로그램 카운터'오류 :
int main() { 
    return 5; 
} 

내가 MARS에서 다음 MIPS 코드를 시도

. 이것은 당신이 cannot jump out of the main function in MARS이기 때문에 분명합니다. 그래서 난과 같이 다시 작성 시도 :

main: ADDI $v0, $zero, 5  # $v0 = 5 
     li $v0, 10    # load 10(exit) for syscall 
     syscall    # exit 

이 실행 한 후 $ V0 레지스터는 내가 콜이 작동하려면에 $의 V0 레지스터를 덮어했기 때문에 이해할 값 (10),하지 (5)가 포함되어 있습니다. 내 질문에,이 응용 프로그램의 호출자에게 올바르게 반환되도록 값 5를 저장하는 위치는 어디입니까?

답변

3

사용 syscall 17 :

exit2 (terminate with value) 
---------------------------- 
$v0 = 17 
$a0 = termination result 

가. "MIPS의 프로그램이 MARS 그래픽 인터페이스 (GUI)의 제어하에 실행되는 경우, $의 A0의 종료 코드가 무시"하는 것으로

관련 문제