Befehlssatz und Assembler
Welche Kombination ist richtig, wenn bei RISC-V die Konstante 0x12345FFF mit den zwei Befehlen lui und addi erzeugt wird?
- Alui t0, 0x12346 gefolgt von addi t0, t0, -1
- Blui t0, 0x12345 gefolgt von addi t0, t0, 0xFFF
- Clui t0, 0x12345 gefolgt von addi t0, t0, -1
Antwort und Erläuterung anzeigen
Antwort: A. lui t0, 0x12346 gefolgt von addi t0, t0, -1
Das Immediate von addi wird vorzeichenerweitert; sind die unteren 12 Bit 0xFFF (höchstes Bit 1), wird daher −1 addiert. Deshalb wird mit lui der obere Teil um 1 größer als 0x12346 gebildet, und es wird −1 zu 0x12346000 addiert, sodass 0x12345FFF entsteht. Diese Korrektur, bei der 1 zum oberen Teil addiert wird, wenn Bit 11 der unteren 12 Bit gesetzt ist, übernehmen Assembler und Linker automatisch.