Befehlssatz und Assembler

Welche Kombination ist richtig, wenn bei RISC-V die Konstante 0x12345FFF mit den zwei Befehlen lui und addi erzeugt wird?

  1. Alui t0, 0x12346 gefolgt von addi t0, t0, -1
  2. Blui t0, 0x12345 gefolgt von addi t0, t0, 0xFFF
  3. 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.

Dieses Thema üben Zur Themenseite

Weitere Fragen zu Befehlssatz und Assembler

  1. Welche Wirkung hat der RISC-V-Befehl auipc (add upper immediate to PC)?
  2. Welchen 32-Bit-Wert enthält t0 nach Ausführung von „addi t0, zero, -1“ in RISC-V (RV32I)?
  3. Im Speicher steht in einem Byte der Wert 0x80. Welche Kombination von Werten ist richtig, wenn dieses Byte mit den RISC-V-Befehlen lb und lbu in ein 32-Bit-Register geladen wird?
  4. Welcher Unterschied zwischen RISC-V und x86 beim Mechanismus bedingter Verzweigungen ist richtig?
  5. Welche Wirkung hat der RISC-V-Befehl „slt t0, a0, a1“?