Befehlssatz und Assembler

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.

Dieses Thema üben Zur Themenseite

Weitere Fragen zu Befehlssatz und Assembler

  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. Was bedeutet es, dass s0 bis s11 in der RISC-V-Aufrufkonvention „vom Aufgerufenen gesichert“ (callee-saved) sind?
  3. 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?
  4. Bei Funktionen, die keine anderen Funktionen aufrufen (Blattfunktionen, Leaf-Funktionen), muss ra oft nicht auf dem Stack gesichert werden. Welche Begründung ist richtig?
  5. Welchen Zweck hat die Ausführung von „addi sp, sp, -16“ am Anfang einer RISC-V-Funktion?