Befehlssatz und Assembler
Was bedeutet es, dass s0 bis s11 in der RISC-V-Aufrufkonvention „vom Aufgerufenen gesichert“ (callee-saved) sind?
- AWenn die aufgerufene Funktion sie verwendet, muss sie die ursprünglichen Werte sichern und vor der Rückkehr wiederherstellen
- BDie aufrufende Funktion muss vor dem Aufruf alle auf 0 setzen
- CEs sind Register, die nur das Betriebssystem verwenden darf und Benutzerprogramme nicht
Antwort und Erläuterung anzeigen
Antwort: A. Wenn die aufgerufene Funktion sie verwendet, muss sie die ursprünglichen Werte sichern und vor der Rückkehr wiederherstellen
Bei vom Aufgerufenen gesicherten Registern ist zugesichert, dass ihr Wert über Funktionsaufrufe hinweg erhalten bleibt. Will die aufgerufene Funktion s0 o. Ä. nutzen, sichert sie es zuerst auf dem Stack und stellt es vor der Rückkehr wieder her. Werte, die die aufrufende Seite auch nach dem Aufruf weiterverwenden will, legt sie in s-Registern ab und muss sie nicht selbst erneut sichern. Schleifenvariablen liegen häufig dort.