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?