Instructieset en assembly

Waar worden in de standaard RISC-V-aanroepconventie het 9e en 10e argument doorgegeven bij het aanroepen van een functie met 10 gehele-getalargumenten?

  1. AIn s0 en s1
  2. BIn t0 en t1
  3. COp de stack
Antwoord en toelichting tonen

Antwoord: C. Op de stack

Er zijn slechts 8 argumentregisters, a0 tot a7, dus vanaf het 9e argument plaatst de aanroeper ze op de stack en leest de aangeroepen functie ze op een vaste positie vanaf de stackpointer. Doordat het aantal geheugentoegangen toeneemt, worden functies met zeer veel argumenten iets trager. Er worden vaak maatregelen genomen om het aantal argumenten te beperken, zoals grote structuren als geheel via een pointer doorgeven.

Dit onderwerp oefenen Naar de onderwerppagina

Meer vragen over Instructieset en assembly

  1. Wat betekent het dat s0 tot s11 in de RISC-V-aanroepconventie „callee-saved”-registers zijn?
  2. 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?
  3. 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?
  4. Wat is het juiste doel van het uitvoeren van „addi sp, sp, -16” aan het begin van een RISC-V-functie?
  5. In de standaard RISC-V-aanroepconventie moet de stackpointer sp bij het betreden van een functie op een veelvoud van 16 bytes zijn uitgelijnd. Wat is de meest passende reden?