Instructieset en assembly
Wat is het juiste doel van het uitvoeren van „addi sp, sp, -16” aan het begin van een RISC-V-functie?
- ADe stack naar lagere adressen laten groeien en een werkgebied van 16 bytes reserveren
- B16 bytes op de stack vrijgeven
- C16 aftrekken van de waarde in sp en dat als retourwaarde teruggeven
Antwoord en toelichting tonen
Antwoord: A. De stack naar lagere adressen laten groeien en een werkgebied van 16 bytes reserveren
Volgens de conventie van veel ISA's, waaronder RISC-V, groeit de stack van hoge naar lage adressen. Als sp met 16 wordt verlaagd, vormen de 16 bytes van de nieuwe sp tot de oude sp het stackframe van deze functie, waarin het terugkeeradres, opgeslagen registers en lokale variabelen kunnen staan. Aan het eind van de functie wordt met „addi sp, sp, 16” sp teruggezet, waardoor het gebied wordt vrijgegeven en de toestand gelijk is aan die vóór de aanroep.