Wat is Frame pointer?

Register dat bij het binnengaan van een functie naar de stackpositie blijft wijzen en niet meer verandert. In RISC-V is dat s0 (fp). Lokale variabelen zijn op vaste afstand te adresseren en de aanroepketen is gemakkelijker te volgen.

Japanse benaming: フレームポインタ

“Frame pointer” komt voor in 1 oefenvragen uit 1 onderwerpen, bijv. Instructieset en assembly.

Vakgebied: Instructieset en assembly

Nu oefenen: vragen over Frame pointer

Welk voordeel heeft het gebruik van de frame pointer (in RISC-V s0/fp) in een functie?

  1. AEr is geen extra register nodig, dus de prestaties verbeteren altijd
  2. 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
  3. 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.

“Frame pointer” in de toelichting

Vragen met “Frame pointer” (1)

  1. Welk voordeel heeft het gebruik van de frame pointer (in RISC-V s0/fp) in een functie?

Verwante termen

Aanroepconventie (calling convention) ABI (application binary interface) Adresseringsmodus Assembler Bladfunctie (leaf function) Branch delay slot Callee-saved register Caller-saved register Conditiecode (condition code) Gecomprimeerde instructies

Naar de woordenlijst