Wie gebe ich einen Wert aus der Hauptfunktion in MIPS zurück?
Angenommen, ich möchte das folgende C-Programm in MIPS schreiben:
int main () {
return 5;
}
Wenn ich den folgenden MIPS-Code versucheMARS:
main: ADDI $v0, $zero, 5 # $v0 = 5
JR $ra # return from main()
Ich erhalte die Fehlermeldung "Ungültiger Programmzähler". Das liegt anscheinend an dirkann in MARS nicht aus der Hauptfunktion herausspringen. Also habe ich versucht, es so umzuschreiben:
main: ADDI $v0, $zero, 5 # $v0 = 5
li $v0, 10 # load 10(exit) for syscall
syscall # exit
Nachdem dies ausgeführt wurde, enthält das $ v0-Register den Wert 10 und nicht 5. Dies ist verständlich, da ich das $ v0-Register überschreiben musste, damit syscall funktioniert. Meine Frage ist also, wo ich den Wert 5 speichern würde, damit er richtig an den Aufrufer dieser Anwendung zurückgegeben wird?