Wat is Argument?

Een waarde die wordt doorgegeven bij het aanroepen van een functie of procedure. De variabele die de waarde in de declaratie ontvangt, heet de formele parameter, en de waarde die bij de aanroep wordt doorgegeven, het actuele argument. Argumenten kunnen worden doorgegeven door waardeoverdracht (call by value), waarbij de waarde wordt gekopieerd, of door referentieoverdracht (call by reference), waarbij de aangeroepen functie naar de variabele of array zelf verwijst.

Japanse benaming: 引数

“Argument” komt voor in 21 oefenvragen uit 8 onderwerpen, bijv. Basis van programmeren (pseudocode traceren), Instructieset en assembly, Basis van Linux en de opdrachtregel.

Vakgebied: Basis van programmeren (pseudocode traceren)

Nu oefenen: vragen over Argument

Waar worden in de standaard RISC-V-aanroepconventie het 9e en 10e argument doorgegeven bij het aanroepen van een functie met 10 gehele-getalargumenten?

  1. AIn s0 en s1
  2. BIn t0 en t1
  3. COp de stack
Antwoord en toelichting tonen

Antwoord: C. Op de stack

Er zijn slechts 8 argumentregisters, a0 tot a7, dus vanaf het 9e argument plaatst de aanroeper ze op de stack en leest de aangeroepen functie ze op een vaste positie vanaf de stackpointer. Doordat het aantal geheugentoegangen toeneemt, worden functies met zeer veel argumenten iets trager. Er worden vaak maatregelen genomen om het aantal argumenten te beperken, zoals grote structs als geheel via een pointer doorgeven.

“Argument” in de toelichting

Vragen met “Argument” (21)

  1. Waar worden in de standaard RISC-V-aanroepconventie het 9e en 10e argument doorgegeven bij het aanroepen van een functie met 10 gehele-getalargumenten?
  2. Zoals hierboven te zien is, wordt het script s.sh met argumenten uitgevoerd. Wat is de uitvoer?
  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 f wordt aangeroepen als f(9087)?
  4. ÷ 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)?
  5. ÷ 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)?
  6. ÷ staat voor deling; bij toekenning aan een variabele van het type integer (ook een argument) worden de cijfers achter de komma weggelaten. Het volgende programma zoekt in de oplopend gesorteerde integer-array data (indexen beginnen bij 1) de index van de eerste waarde die minstens x is, en zet die in lo. x is niet groter dan het laatste element van data. Wat moet er op de plaats van 【a】 in het programma staan?
  7. Wat is het belangrijkste doel van het vastleggen van een aanroepconventie (calling convention)?
  8. Welke registers worden in de standaard RISC-V-aanroepconventie gebruikt om gehele-getalargumenten en retourwaarden door te geven?
  9. Welke fout wordt het best gevonden door de semantische analyse van een compiler?
  10. Welk effect heeft het toepassen van tail call optimization op de laatste recursieve aanroep van de bovenstaande functie?
  11. Wat is het belangrijkste voordeel van typecontrole door de compiler in een taal met statische types?
  12. Wat gebeurt er juist wanneer de laatste ecall-instructie van de bovenstaande RISC-V-code wordt uitgevoerd?
  13. Wat is de belangrijkste reden dat het sneller is om kleine gegevens eerst in een buffer in de gebruikersruimte te verzamelen en gebundeld weg te schrijven dan bij het byte voor byte wegschrijven telkens een systeemaanroep te doen?
  14. Wat is de uitvoer van de twee echo-commando's als de bovenstaande commando's in volgorde worden uitgevoerd?
  15. Welke bestanden staan na de bovenstaande sessie in de directory?

Verwante termen

Variabele Retourwaarde (return value) Stack (stapelgeheugen) Aanroepconventie (calling convention) Pointer Recursie Array Modulo-operatie Systeemaanroep (system call) Stackpointer

Naar de woordenlijst