Wat is Retourwaarde (return value)?

De waarde die een functie aan de aanroeper teruggeeft als ze klaar is. In pseudocode wordt de waarde van de expressie na return de retourwaarde, en de functie eindigt zodra return wordt uitgevoerd.

Japanse benaming: 戻り値

“Retourwaarde (return value)” komt voor in 12 oefenvragen uit 5 onderwerpen, bijv. Basis van programmeren (pseudocode traceren), Instructieset en assembly, Linker, loader en uitvoerbare formaten.

Vakgebied: Basis van programmeren (pseudocode traceren)

Nu oefenen: vragen over Retourwaarde (return value)

Welke registers worden in de standaard RISC-V-aanroepconventie gebruikt om gehele-getalargumenten en retourwaarden door te geven?

  1. AArgumenten in s0 tot s7, retourwaarde in ra
  2. BArgumenten in a0 tot a7, retourwaarde in a0 (en a1)
  3. CAlle argumenten op de stack, retourwaarde in sp
Antwoord en toelichting tonen

Antwoord: B. Argumenten in a0 tot a7, retourwaarde in a0 (en a1)

In de standaard RISC-V-aanroepconventie worden maximaal 8 gehele-getalargumenten doorgegeven in a0 tot a7 (x10 tot x17), en de retourwaarde komt in a0, bij 64-bits waarden op RV32 en dergelijke in a0 en a1. Omdat ze via registers, die sneller zijn dan geheugen, worden doorgegeven, is de overhead van een functie-aanroep klein. Argumenten boven de 8 komen op de stack. Kommagetalargumenten gebruiken fa0 tot fa7.

“Retourwaarde (return value)” in de toelichting

Vragen met “Retourwaarde (return value)” (12)

  1. Welke registers worden in de standaard RISC-V-aanroepconventie gebruikt om gehele-getalargumenten en retourwaarden door te geven?
  2. ÷ staat voor deling; bij toekenning aan een variabele van het type integer (ook een argument) worden de cijfers achter de komma weggelaten. Wat is de retourwaarde als de volgende functie f wordt aangeroepen als f(9087)?
  3. ÷ staat voor deling; bij toekenning aan een variabele van het type integer (ook een argument) worden de cijfers achter de komma weggelaten. Wat is de retourwaarde als de volgende functie toBin wordt aangeroepen als toBin(12)?
  4. Wat is de retourwaarde als de volgende functie s wordt aangeroepen als s(7)?
  5. Wat is de retourwaarde als de volgende functie fib wordt aangeroepen als fib(10)?
  6. Wat is de retourwaarde van de derde aanroep als de bovenstaande functie f drie keer achter elkaar wordt aangeroepen?
  7. Wat is het belangrijkste doel van het vastleggen van een aanroepconventie (calling convention)?
  8. Welke van de fouten in een programma kan al tijdens het compileren worden gevonden?
  9. Welke uitspraak is juist over het adres waar het OS in een C-programma de uitvoering begint (entry point)?
  10. Wat gebeurt er in het algemeen met de waarde 3 als de C-functie main eindigt met „return 3;”?
  11. ÷ staat voor deling; bij toekenning aan een variabele van het type integer (ook een argument) worden de cijfers achter de komma weggelaten. Hoe vaak wordt pow aangeroepen, de eerste aanroep meegerekend, als de volgende functie pow wordt aangeroepen als pow(2, 10)?
  12. Hoe vaak wordt c aangeroepen, de eerste aanroep meegerekend, als de volgende functie c wordt aangeroepen als c(4, 2)?

Verwante termen

Argument Variabele Stack (stapelgeheugen) Aanroepconventie (calling convention) Modulo-operatie Recursie Gehele deling (integer division) ABI (application binary interface) Entry point Linker

Naar de woordenlijst