Instructieset en assembly

Welke 32-bits waarde staat in t0 nadat in RISC-V (RV32I) „addi t0, zero, -1” is uitgevoerd?

  1. A0xFFFFFFFF
  2. B0x00000FFF
  3. C0x80000001
Antwoord en toelichting tonen

Antwoord: A. 0xFFFFFFFF

De immediate -1 wordt met 12 bits weergegeven als 0xFFF. addi breidt deze tekenuitgebreid uit naar 32 bits, dat wil zeggen dat het hoogste bit 1 naar alle hogere posities wordt gekopieerd, zodat 0xFFFFFFFF ontstaat, wat -1 in two's complement weergeeft. Dankzij tekenuitbreiding kan aftrekken worden gedaan door alleen een negatieve immediate op te tellen. Als de bovenste bits met nullen zouden worden gevuld, zou het 0x00000FFF = 4095 worden en verandert de betekenis.

Dit onderwerp oefenen Naar de onderwerppagina

Meer vragen over Instructieset en assembly

  1. In het geheugen staat in één byte 0x80. Welke combinatie van waarden is juist als dit byte met de RISC-V-instructies lb en lbu in een 32-bits register wordt gelezen?
  2. Welk verschil tussen RISC-V en x86 in de werking van voorwaardelijke sprongen is juist?
  3. Welke werking van de RISC-V-instructie „slt t0, a0, a1” is juist?
  4. Wat is de waarde van t0 nadat de bovenstaande RISC-V-code is uitgevoerd?
  5. 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?