Befehlssatz und Assembler

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).

Dieses Thema üben Zur Themenseite

Weitere Fragen zu Befehlssatz und Assembler

  1. Welche Register werden in der Standard-Aufrufkonvention von RISC-V zur Übergabe von Ganzzahlargumenten und Rückgabewerten verwendet?
  2. Wo werden das 9. und 10. Argument übergeben, wenn in der Standard-Aufrufkonvention von RISC-V eine Funktion mit 10 Ganzzahlargumenten aufgerufen wird?
  3. Was bedeutet es, dass s0 bis s11 in der RISC-V-Aufrufkonvention „vom Aufgerufenen gesichert“ (callee-saved) sind?
  4. 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?
  5. Bei Funktionen, die keine anderen Funktionen aufrufen (Blattfunktionen, Leaf-Funktionen), muss ra oft nicht auf dem Stack gesichert werden. Welche Begründung ist richtig?