Instructieset en assembly

De voorwaardelijke sprong-instructies van RISC-V (B-formaat) drukken de afstand tot het sprongdoel uit in een aantal bytes met teken van 13 bits, waarvan het laagste bit altijd 0 is en niet in de instructie wordt opgenomen. Welk bereik bereikt een sprong-instructie rechtstreeks ongeveer?

  1. AOngeveer 4 KiB voor en achter de sprong-instructie
  2. BOngeveer 1 MiB voor en achter de sprong-instructie
  3. COveral in het gehele geheugen
Antwoord en toelichting tonen

Antwoord: A. Ongeveer 4 KiB voor en achter de sprong-instructie

Een waarde van 13 bits met teken kan -4096 tot +4095 weergeven, maar omdat instructies op een veelvoud van 2 bytes liggen, is het laagste bit altijd 0 en is het bereik -4096 tot +4094 bytes. Door het laagste bit weg te laten, wordt met dezelfde veldgrootte een tweemaal zo groot bereik gehaald. Voor verdere sprongen herschrijft de assembler dit tot een korte sprong met omgekeerde voorwaarde die over een jal heen springt dat verder reikt (ongeveer ±1 MiB).

Dit onderwerp oefenen Naar de onderwerppagina

Meer vragen over Instructieset en assembly

  1. Welke werking van de RISC-V-instructie „jal ra, func” is juist?
  2. Als welke instructie wordt de RISC-V-pseudo-instructie „ret” in werkelijkheid uitgevoerd?
  3. Wat is het belangrijkste doel van het vastleggen van een aanroepconventie (calling convention)?
  4. Welke registers worden in de standaard RISC-V-aanroepconventie gebruikt om gehele-getalargumenten en retourwaarden door te geven?
  5. Waar worden in de standaard RISC-V-aanroepconventie het 9e en 10e argument doorgegeven bij het aanroepen van een functie met 10 gehele-getalargumenten?