Instructieset en assembly

Wat is de juiste combinatie om in RISC-V de constante 0x12345FFF met de twee instructies lui en addi te maken?

  1. Alui t0, 0x12346 gevolgd door addi t0, t0, -1
  2. Blui t0, 0x12345 gevolgd door addi t0, t0, 0xFFF
  3. Clui t0, 0x12345 gevolgd door addi t0, t0, -1
Antwoord en toelichting tonen

Antwoord: A. lui t0, 0x12346 gevolgd door addi t0, t0, -1

De immediate van addi wordt tekenuitgebreid, dus als de onderste 12 bits 0xFFF zijn (hoogste bit is 1), wordt het als -1 opgeteld. Daarom wordt het bovenste deel met lui één groter gemaakt, 0x12346, en wordt -1 opgeteld bij 0x12346000 om 0x12345FFF te krijgen. Deze correctie, waarbij 1 bij het bovenste deel wordt opgeteld als bit 11 van de onderste 12 bits 1 is, wordt automatisch door assembler en linker uitgevoerd.

Dit onderwerp oefenen Naar de onderwerppagina

Meer vragen over Instructieset en assembly

  1. Welke werking van de RISC-V-instructie auipc (add upper immediate to PC) is juist?
  2. Welke 32-bits waarde staat in t0 nadat in RISC-V (RV32I) „addi t0, zero, -1” is uitgevoerd?
  3. 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?
  4. Welk verschil tussen RISC-V en x86 in de werking van voorwaardelijke sprongen is juist?
  5. Welke werking van de RISC-V-instructie „slt t0, a0, a1” is juist?