Jak mogę zwrócić wartość z głównej funkcji w MIPS?

Powiedz, że chcę napisać następujący program C w MIPS:

int main () {
  return 5;
}

Kiedy próbuję następującego kodu MIPS wMARS:

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

Otrzymuję błąd „nieprawidłowy licznik programu”. To najwyraźniej dlatego, że tynie może wyskoczyć z głównej funkcji w MARS. Próbowałem więc przepisać to tak:

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

Po wykonaniu tego rejestru $ v0 zawiera wartość 10, a nie 5. Co jest zrozumiałe, ponieważ musiałem zastąpić rejestr $ v0, aby wywołanie systemowe działało. Moje pytanie brzmi zatem, gdzie zapisałbym wartość 5, aby poprawnie powrócić do dzwoniącego tej aplikacji?

questionAnswers(1)

yourAnswerToTheQuestion