Befehlssatz und Assembler

Welche Wirkung hat der RISC-V-Befehl „jal ra, func“?

  1. AEr speichert die Adresse des nächsten Befehls in ra und springt dann nach func
  2. BEr legt nur die Adresse von func in ra ab und springt nicht
  3. CEr kehrt zu der in ra stehenden Adresse zurück
Antwort und Erläuterung anzeigen

Antwort: A. Er speichert die Adresse des nächsten Befehls in ra und springt dann nach func

jal (jump and link) schreibt die Adresse des nächsten Befehls (PC+4) in das angegebene Register (Link) und springt zur Zieladresse. In der Aufrufkonvention wird die Rücksprungadresse in ra (x1) abgelegt; ein Funktionsaufruf lautet „jal ra, func“, als Pseudobefehl „call func“. Die aufgerufene Funktion kehrt am Ende zur Adresse in ra zurück. Ist das Zielregister x0, ist es nur ein Sprung.

Dieses Thema üben Zur Themenseite

Weitere Fragen zu Befehlssatz und Assembler

  1. Als welcher Befehl wird der RISC-V-Pseudobefehl „ret“ tatsächlich ausgeführt?
  2. Was ist der Hauptzweck der Festlegung einer Aufrufkonvention (Calling Convention)?
  3. Welche Register werden in der Standard-Aufrufkonvention von RISC-V zur Übergabe von Ganzzahlargumenten und Rückgabewerten verwendet?
  4. Wo werden das 9. und 10. Argument übergeben, wenn in der Standard-Aufrufkonvention von RISC-V eine Funktion mit 10 Ganzzahlargumenten aufgerufen wird?
  5. Was bedeutet es, dass s0 bis s11 in der RISC-V-Aufrufkonvention „vom Aufgerufenen gesichert“ (callee-saved) sind?