Befehlssatz und Assembler
Welchen Zweck hat die Ausführung von „addi sp, sp, -16“ am Anfang einer RISC-V-Funktion?
- ADen Stack zu kleineren Adressen hin wachsen zu lassen und einen Arbeitsbereich von 16 Byte zu reservieren
- B16 Byte auf dem Stack freizugeben
- C16 vom Wert in sp abzuziehen und als Rückgabewert zurückzugeben
Antwort und Erläuterung anzeigen
Antwort: A. Den Stack zu kleineren Adressen hin wachsen zu lassen und einen Arbeitsbereich von 16 Byte zu reservieren
Nach der Konvention vieler ISAs einschließlich RISC-V wächst der Stack von höheren zu niedrigeren Adressen. Wird sp um 16 verringert, bilden die 16 Byte vom neuen sp bis zum ursprünglichen sp den Stackframe dieser Funktion, in dem Rücksprungadresse, gesicherte Register und lokale Variablen abgelegt werden können. Am Ende der Funktion wird sp mit „addi sp, sp, 16“ zurückgesetzt, der Bereich freigegeben und der Zustand vor dem Aufruf wiederhergestellt.