Instructieset en assembly
Als welke instructie wordt de RISC-V-pseudo-instructie „ret” in werkelijkheid uitgevoerd?
- Ajal ra, 0
- Bjalr x0, 0(ra)
- Clw ra, 0(sp)
Antwoord en toelichting tonen
Antwoord: B. jalr x0, 0(ra)
jalr (jump and link register) springt naar het adres dat ontstaat door een offset op te tellen bij een registerwaarde en plaatst het adres van de volgende instructie in de bestemming. ret is „jalr x0, 0(ra)”: het springt naar het adres in ra en gooit de link in x0 weg. jalr wordt ook gebruikt voor sprongen waarvan het doel pas tijdens uitvoering bekend is, zoals bij functiepointers en aanroepen van virtuele functies. „lw ra, …” om ra te herstellen is een voorbereiding vóór ret.