Instructieset en assembly
In de RISC-V-aanroepconventie zijn t0 tot t6 „caller-saved”-registers. Wat is de juiste handelwijze als een functie de waarde die hij in t0 heeft gezet ook na het aanroepen van een andere functie wil gebruiken?
- ANiets doen, want de aangeroepen functie herstelt t0 altijd
- Bt0 kan door andere functies niet worden overschreven en kan dus gewoon worden gebruikt
- CDe waarde van t0 vóór de aanroep op bijvoorbeeld de stack bewaren en na de aanroep terugzetten
Antwoord en toelichting tonen
Antwoord: C. De waarde van t0 vóór de aanroep op bijvoorbeeld de stack bewaren en na de aanroep terugzetten
De t-registers mag de aangeroepen functie vrij gebruiken zonder ze op te slaan. Als de waarde dus ook na de aanroep nodig is, moet de aanroeper die zelf bewaren. Door de verantwoordelijkheid voor het opslaan per register tussen aanroeper en aangeroepene te verdelen, kunnen veel functies tijdelijke registers zonder opslagmoeite gebruiken en neemt het totale aantal keren opslaan en herstellen af.