Wat is Bladfunctie (leaf function)?

Functie die geen andere functies aanroept. Het terugkeeradres wordt niet overschreven, dus opslaan is niet nodig en vaak is geen stackframe nodig.

Japanse benaming: 葉関数

“Bladfunctie (leaf function)” komt voor in 1 oefenvragen uit 1 onderwerpen, bijv. Instructieset en assembly.

Vakgebied: Instructieset en assembly

Nu oefenen: vragen over Bladfunctie (leaf function)

Bij functies die geen andere functies aanroepen (bladfuncties, leaf functions) hoeft ra vaak niet op de stack te worden opgeslagen. Wat is de juiste reden?

  1. ABladfuncties gebruiken geen ret-instructie
  2. BDe CPU plaatst het terugkeeradres van een bladfunctie automatisch op de stack
  3. COmdat ze geen andere functies aanroepen, wordt ra niet overschreven en blijft het terugkeeradres behouden
Antwoord en toelichting tonen

Antwoord: C. Omdat ze geen andere functies aanroepen, wordt ra niet overschreven en blijft het terugkeeradres behouden

ra wordt bij elke jal die een functie aanroept overschreven, dus een functie die andere functies aanroept moet zijn eigen terugkeeradres eerst op de stack opslaan. Een bladfunctie gebruikt geen jal, dus ra blijft intact en kan zonder opslaan met ret terugkeren. Als ook geen callee-saved-registers worden gebruikt, hoeft zelfs geen stackframe te worden gemaakt. De call-instructie van x86 plaatst het terugkeeradres altijd op de stack, wat hier een verschil met RISC-V is.

“Bladfunctie (leaf function)” in de toelichting

Vragen met “Bladfunctie (leaf function)” (1)

  1. Bij functies die geen andere functies aanroepen (bladfuncties, leaf functions) hoeft ra vaak niet op de stack te worden opgeslagen. Wat is de juiste reden?

Verwante termen

Stackframe Aanroepconventie (calling convention) ABI (application binary interface) Adresseringsmodus Assembler Branch delay slot Callee-saved register Caller-saved register Conditiecode (condition code) Frame pointer

Naar de woordenlijst