Was ist Argument?

Ein Wert, der beim Aufruf einer Funktion oder Prozedur übergeben wird. Die Variable, die den Wert in der Deklaration empfängt, heißt formaler Parameter, der beim Aufruf übergebene Wert aktuelles Argument. Argumente können als Wert übergeben werden (Call by Value), wobei der Wert kopiert wird, oder als Referenz (Call by Reference), wobei die aufgerufene Funktion auf die Variable oder das Array selbst zugreift.

Japanische Bezeichnung: 引数

„Argument“ kommt in 19 Übungsfragen aus 8 Themen vor, z. B. Compiler, Befehlssatz und Assembler, Grundlagen von Linux und der Kommandozeile.

Fachgebiet: Grundlagen der Programmierung (Pseudocode nachverfolgen)

Jetzt üben: Fragen zu Argument

Wo werden das 9. und 10. Argument übergeben, wenn in der Standard-Aufrufkonvention von RISC-V eine Funktion mit 10 Ganzzahlargumenten aufgerufen wird?

  1. AIn s0 und s1
  2. BIn t0 und t1
  3. CAuf dem Stack
Antwort und Erläuterung anzeigen

Antwort: C. Auf dem Stack

Da es nur 8 Argumentregister a0 bis a7 gibt, legt die aufrufende Seite das 9. und alle weiteren Argumente auf den Stack, und die aufgerufene Seite liest sie an festen Positionen relativ zum Stackpointer. Wegen der zusätzlichen Speicherzugriffe werden Funktionen mit sehr vielen Argumenten etwas langsamer. Häufig wird versucht, die Argumentzahl klein zu halten, etwa indem große Strukturen gesammelt über einen Zeiger auf die Struktur übergeben werden.

„Argument“ in den Erläuterungen

Fragen mit „Argument“ (19)

  1. Wo werden das 9. und 10. Argument übergeben, wenn in der Standard-Aufrufkonvention von RISC-V eine Funktion mit 10 Ganzzahlargumenten aufgerufen wird?
  2. Wie oben gezeigt, wird das Skript s.sh mit Argumenten ausgeführt. Welche Ausgabe ist richtig?
  3. Was ist der Hauptzweck der Festlegung einer Aufrufkonvention (Calling Convention)?
  4. Welche Register werden in der Standard-Aufrufkonvention von RISC-V zur Übergabe von Ganzzahlargumenten und Rückgabewerten verwendet?
  5. Welches ist das am besten geeignete Beispiel für einen Fehler, den die semantische Analyse des Compilers findet?
  6. Welche Kombination aus Vor- und Nachteil des Inlinings von Funktionen ist richtig?
  7. Welche Wirkung hat es, wenn auf den letzten rekursiven Aufruf der obigen Funktion die Tail-Call-Optimierung angewendet wird?
  8. Was ist der Hauptvorteil der Typprüfung durch den Compiler bei einer Sprache mit statischen Typen?
  9. Wann wird bei Shared Libraries unter Linux die Versionsnummer des soname, wie das „.1“ in libfoo.so.1, im Allgemeinen erhöht?
  10. Was geschieht, wenn der letzte Befehl ecall des obigen RISC-V-Codes ausgeführt wird?
  11. Was ist der Hauptgrund dafür, dass es beim byteweisen Schreiben kleiner Datenmengen schneller ist, sie in einem Puffer im Benutzerraum zu sammeln und gebündelt zu schreiben, als jedes Mal einen Systemaufruf auszuführen?
  12. Welche Ausgaben erzeugen die beiden echo-Befehle, wenn die obigen Befehle nacheinander ausgeführt werden?
  13. Welche Dateien liegen nach der obigen Sitzung im Verzeichnis?
  14. Eine Funktion fib(n) für die Fibonacci-Zahlen ist rekursiv definiert als „ist n kleiner oder gleich 1, gib n zurück; andernfalls gib fib(n−1) + fib(n−2) zurück“. Wie oft wird fib beim Aufruf von fib(5) aufgerufen, den ersten Aufruf eingeschlossen?
  15. Welche Ausgabe erzeugt das obige Programm bei der Ausführung?

Verwandte Begriffe

Stack (Stapelspeicher) Aufrufkonvention Zeiger (Pointer) Variable Rückgabewert Systemaufruf (System Call) Stackpointer Assembler ABI (Application Binary Interface) Syntaxanalyse (Parsing)

Zur Glossarübersicht