Befehlssatz und Assembler
Welche Wirkung hat der RISC-V-Befehl auipc (add upper immediate to PC)?
- AEr speichert den Wert des PC unverändert im Speicher
- BEr addiert zur eigenen Adresse (PC) den um 12 Bit nach links verschobenen 20-Bit-Immediate-Wert und legt das Ergebnis in einem Register ab
- CEr springt bedingungslos an die per Immediate angegebene Adresse und überschreibt den PC
Antwort und Erläuterung anzeigen
Antwort: B. Er addiert zur eigenen Adresse (PC) den um 12 Bit nach links verschobenen 20-Bit-Immediate-Wert und legt das Ergebnis in einem Register ab
auipc legt lediglich „PC + (Immediate << 12)“ in ein Register. Addiert man anschließend mit jalr oder lw einen Offset aus den unteren 12 Bit, lassen sich Adressen von Funktionen oder Daten in einem Bereich von etwa ±2 GiB als Abstand vom PC angeben. Damit können in positionsunabhängigem Code, der an beliebiger Stelle geladen läuft, entfernte Funktionen aufgerufen und globale Variablen gelesen werden.