Was ist Aufrufkonvention?

Vereinbarung beim Funktionsaufruf, über welche Register oder den Stack Argumente und Rückgabewerte übergeben werden und wer welche Register sichert. Wichtiger Teil des ABI.

Japanische Bezeichnung: 呼び出し規約

„Aufrufkonvention“ kommt in 9 Übungsfragen aus 1 Themen vor, z. B. Befehlssatz und Assembler.

Fachgebiet: Befehlssatz und Assembler

Jetzt üben: Fragen zu Aufrufkonvention

Was ist der Hauptzweck der Festlegung einer Aufrufkonvention (Calling Convention)?

  1. ADie Benennung von Funktionen zu vereinheitlichen und Programme lesbarer zu machen
  2. BDass getrennt kompilierte Funktionen und Bibliotheken Argumente und Rückgabewerte korrekt austauschen können
  3. CDass vor jedem Funktionsaufruf die Erlaubnis des Betriebssystems eingeholt wird
Antwort und Erläuterung anzeigen

Antwort: B. Dass getrennt kompilierte Funktionen und Bibliotheken Argumente und Rückgabewerte korrekt austauschen können

Die Aufrufkonvention legt fest, in welchen Registern Argumente übergeben werden, wo der Rückgabewert zurückgegeben wird, welche Register die aufgerufene Seite verändern darf und wie der Stack verwendet wird. Dank dieser Vereinbarung arbeiten Bibliotheken, die mit verschiedenen Compilern erstellt wurden, sowie in Assembler geschriebene Funktionen und C-Funktionen korrekt zusammen. Die Aufrufkonvention ist ein wichtiger Bestandteil des ABI (Application Binary Interface).

Welche Register werden in der Standard-Aufrufkonvention von RISC-V zur Übergabe von Ganzzahlargumenten und Rückgabewerten verwendet?

  1. AArgumente in s0 bis s7, Rückgabewert in ra
  2. BArgumente in a0 bis a7, Rückgabewert in a0 (und a1)
  3. CAlle Argumente auf dem Stack, Rückgabewert in sp
Antwort und Erläuterung anzeigen

Antwort: B. Argumente in a0 bis a7, Rückgabewert in a0 (und a1)

In der Standard-Aufrufkonvention von RISC-V werden bis zu 8 Ganzzahlargumente in a0 bis a7 (x10 bis x17) übergeben, der Rückgabewert kommt in a0, bei 64-Bit-Werten u. Ä. in a0 und a1. Da die Übergabe über Register erfolgt, die schneller als der Speicher sind, ist der Aufwand eines Funktionsaufrufs gering. Mehr als 8 Argumente werden auf dem Stack abgelegt. Gleitkommaargumente verwenden fa0 bis fa7.

„Aufrufkonvention“ in den Erläuterungen

Fragen mit „Aufrufkonvention“ (9)

  1. Was ist der Hauptzweck der Festlegung einer Aufrufkonvention (Calling Convention)?
  2. Welche Register werden in der Standard-Aufrufkonvention von RISC-V zur Übergabe von Ganzzahlargumenten und Rückgabewerten verwendet?
  3. Wo werden das 9. und 10. Argument übergeben, wenn in der Standard-Aufrufkonvention von RISC-V eine Funktion mit 10 Ganzzahlargumenten aufgerufen wird?
  4. Was bedeutet es, dass s0 bis s11 in der RISC-V-Aufrufkonvention „vom Aufgerufenen gesichert“ (callee-saved) sind?
  5. In der RISC-V-Aufrufkonvention sind t0 bis t6 „vom Aufrufer gesichert“ (caller-saved). Welches Vorgehen ist richtig, wenn eine Funktion einen in t0 abgelegten Wert auch nach dem Aufruf einer anderen Funktion weiterverwenden will?
  6. In der Standard-Aufrufkonvention von RISC-V muss der Stackpointer sp beim Betreten einer Funktion auf ein Vielfaches von 16 Byte ausgerichtet sein. Welche Begründung passt am besten?
  7. Welche Universal-Ganzzahlregister besitzt RISC-V RV32I (der 32-Bit-Basisbefehlssatz für Ganzzahlen)?
  8. Welche Wirkung hat der RISC-V-Befehl „jal ra, func“?
  9. Welche Beschreibung des ABI (Application Binary Interface) ist richtig?

Verwandte Begriffe

Bitfehlerrate (BER) ABI (Application Binary Interface) Stackpointer Assembler Rücksprungadresse Pseudobefehl Befehlssatzarchitektur (ISA) Adressierungsart Bedingungscode (Condition Codes) Blattfunktion (Leaf Function)

Zur Glossarübersicht