Instructieset en assembly
Welk voordeel heeft het gebruik van de frame pointer (in RISC-V s0/fp) in een functie?
- AEr is geen extra register nodig, dus de prestaties verbeteren altijd
- BZelfs als sp halverwege de functie verandert, kunnen lokale variabelen en argumenten op een vaste afstand worden aangeduid en kan een debugger de reeks aanroepen gemakkelijk volgen
- CDe stackruimte wordt automatisch groter en loopt niet meer over
Antwoord en toelichting tonen
Antwoord: B. Zelfs als sp halverwege de functie verandert, kunnen lokale variabelen en argumenten op een vaste afstand worden aangeduid en kan een debugger de reeks aanroepen gemakkelijk volgen
De frame pointer is een register dat blijft wijzen naar de stackpositie op het moment dat de functie werd betreden. Ook als sp halverwege verandert, bijvoorbeeld bij arrays van variabele lengte, kunnen lokale variabelen worden aangeduid als „zoveel bytes vanaf fp”. Als in elk frame de vorige fp wordt bewaard, kan men door die te volgen de reeks aanroepen (backtrace) verkrijgen. Het neemt echter één register in beslag en wordt bij optimalisatie vaak weggelaten.