Instructieset en assembly
Welke werking van de RISC-V-instructie auipc (add upper immediate to PC) is juist?
- ASlaat de waarde van PC ongewijzigd op in het geheugen
- BTelt een 12 bits naar links geschoven immediate van 20 bits op bij het eigen adres (PC) en plaatst dit in een register
- CSpringt onvoorwaardelijk naar een met een immediate opgegeven adres en herschrijft PC
Antwoord en toelichting tonen
Antwoord: B. Telt een 12 bits naar links geschoven immediate van 20 bits op bij het eigen adres (PC) en plaatst dit in een register
auipc plaatst alleen „PC + (immediate << 12)” in een register. Als daarna met jalr of lw de offset van de onderste 12 bits wordt opgeteld, kunnen adressen van functies en data binnen een bereik van ongeveer ±2 GiB vanaf de huidige positie worden aangeduid als afstand vanaf PC. Daardoor kunnen in position-independent code, die overal in het geheugen kan worden geladen, verre functies worden aangeroepen en globale variabelen worden gelezen.