Befehlssatz und Assembler

Welchen 32-Bit-Wert enthält t0 nach Ausführung von „addi t0, zero, -1“ in RISC-V (RV32I)?

  1. A0xFFFFFFFF
  2. B0x00000FFF
  3. C0x80000001
Antwort und Erläuterung anzeigen

Antwort: A. 0xFFFFFFFF

Das Immediate −1 wird in 12 Bit als 0xFFF dargestellt. addi erweitert es auf 32 Bit vorzeichenrichtig, kopiert also das höchste Bit 1 in alle höheren Stellen, sodass sich 0xFFFFFFFF ergibt, die Darstellung von −1 im Zweierkomplement. Dank der Vorzeichenerweiterung lässt sich durch Addieren eines negativen Immediate subtrahieren. Würde mit Nullen aufgefüllt, ergäbe sich 0x00000FFF = 4095, und die Bedeutung wäre verändert.

Dieses Thema üben Zur Themenseite

Weitere Fragen zu Befehlssatz und Assembler

  1. 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?
  2. Welcher Unterschied zwischen RISC-V und x86 beim Mechanismus bedingter Verzweigungen ist richtig?
  3. Welche Wirkung hat der RISC-V-Befehl „slt t0, a0, a1“?
  4. Welchen Wert hat t0, wenn der obige RISC-V-Code ausgeführt wurde?
  5. Der bedingte Verzweigungsbefehl von RISC-V (B-Format) gibt den Abstand zum Ziel als vorzeichenbehaftete 13-Bit-Bytezahl an, deren niedrigstes Bit stets 0 ist und nicht in den Befehl aufgenommen wird. Welcher Bereich wird von einem Verzweigungsbefehl direkt erreicht?