Befehlssatz und Assembler
Als welcher Befehl wird der RISC-V-Pseudobefehl „ret“ tatsächlich ausgeführt?
- Ajal ra, 0
- Bjalr x0, 0(ra)
- Clw ra, 0(sp)
Antwort und Erläuterung anzeigen
Antwort: B. jalr x0, 0(ra)
jalr (jump and link register) springt zu der Adresse aus Registerwert plus Offset und legt die Adresse des nächsten Befehls im Zielregister ab. ret ist „jalr x0, 0(ra)“: Es springt zur Adresse in ra, der Link wird nach x0 verworfen. jalr dient auch für Sprünge, deren Ziel erst zur Laufzeit feststeht, etwa Aufrufe über Funktionszeiger oder virtuelle Funktionen. „lw ra, …“ zum Wiederherstellen von ra ist eine Vorbereitung vor ret.