Instructieset en assembly

Welke registers worden in de standaard RISC-V-aanroepconventie gebruikt om gehele-getalargumenten en retourwaarden door te geven?

  1. AArgumenten in s0 tot s7, retourwaarde in ra
  2. BArgumenten in a0 tot a7, retourwaarde in a0 (en a1)
  3. CAlle argumenten op de stack, retourwaarde in sp
Antwoord en toelichting tonen

Antwoord: B. Argumenten in a0 tot a7, retourwaarde in a0 (en a1)

In de standaard RISC-V-aanroepconventie worden maximaal 8 gehele-getalargumenten doorgegeven in a0 tot a7 (x10 tot x17), en de retourwaarde komt in a0, bij 64-bits waarden en dergelijke in a0 en a1. Omdat ze via registers, die sneller zijn dan geheugen, worden doorgegeven, is de overhead van een functie-aanroep klein. Argumenten boven de 8 komen op de stack. Kommagetalargumenten gebruiken fa0 tot fa7.

Dit onderwerp oefenen Naar de onderwerppagina

Meer vragen over Instructieset en assembly

  1. Waar worden in de standaard RISC-V-aanroepconventie het 9e en 10e argument doorgegeven bij het aanroepen van een functie met 10 gehele-getalargumenten?
  2. Wat betekent het dat s0 tot s11 in de RISC-V-aanroepconventie „callee-saved”-registers zijn?
  3. 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?
  4. Bij functies die geen andere functies aanroepen (bladfuncties, leaf functions) hoeft ra vaak niet op de stack te worden opgeslagen. Wat is de juiste reden?
  5. Wat is het juiste doel van het uitvoeren van „addi sp, sp, -16” aan het begin van een RISC-V-functie?