Instructieset en assembly
Wat is de juiste combinatie om in RISC-V de constante 0x12345FFF met de twee instructies lui en addi te maken?
- Alui t0, 0x12346 gevolgd door addi t0, t0, -1
- Blui t0, 0x12345 gevolgd door addi t0, t0, 0xFFF
- 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.