Instructieset en assembly

Wat is de waarde van t0 nadat de bovenstaande RISC-V-code is uitgevoerd?

      li   t0, 0
      li   t1, 4
loop: add  t0, t0, t1
      addi t1, t1, -1
      bnez t1, loop
  1. A4
  2. B10
  3. C6
Antwoord en toelichting tonen

Antwoord: B. 10

Terwijl t1 vanaf 4 telkens met 1 afneemt, wordt t1 bij t0 opgeteld. t0 wordt achtereenvolgens 4, 7, 9 en 10, en wanneer t1 0 wordt, springt bnez (spring als niet 0) niet meer en verlaat het de lus. Het resultaat is 4 + 3 + 2 + 1 = 10. bnez is de pseudo-instructie van „bne t1, zero, loop”. De vorm waarbij een teller wordt verlaagd en met 0 vergeleken, wordt veel gebruikt omdat geen vergelijkingsconstante nodig is.

Dit onderwerp oefenen Naar de onderwerppagina

Meer vragen over Instructieset en assembly

  1. 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?
  2. Welke werking van de RISC-V-instructie „jal ra, func” is juist?
  3. Als welke instructie wordt de RISC-V-pseudo-instructie „ret” in werkelijkheid uitgevoerd?
  4. Wat is het belangrijkste doel van het vastleggen van een aanroepconventie (calling convention)?
  5. Welke registers worden in de standaard RISC-V-aanroepconventie gebruikt om gehele-getalargumenten en retourwaarden door te geven?