Instructieset en assembly
Wat betekent het dat s0 tot s11 in de RISC-V-aanroepconventie „callee-saved”-registers zijn?
- AAls de aangeroepen functie ze gebruikt, slaat die de oorspronkelijke waarde op en herstelt die vóór de terugkeer
- BDe aanroepende functie moet ze vóór de aanroep altijd allemaal op 0 zetten
- CHet zijn registers die alleen het OS kan gebruiken en die gebruikersprogramma's niet kunnen gebruiken
Antwoord en toelichting tonen
Antwoord: A. Als de aangeroepen functie ze gebruikt, slaat die de oorspronkelijke waarde op en herstelt die vóór de terugkeer
Bij callee-saved-registers is afgesproken dat de waarde behouden blijft over functie-aanroepen heen. Als de aangeroepen functie bijvoorbeeld s0 wil gebruiken, slaat die het eerst op de stack op en herstelt het vóór de terugkeer. De aanroeper hoeft zelf niets opnieuw op te slaan als hij waarden die hij na een aanroep nog wil gebruiken in s-registers houdt. Lusvariabelen en dergelijke worden vaak hier geplaatst.