Befehlssatz und Assembler

Das Immediate des RISC-V-Befehls addi ist eine vorzeichenbehaftete 12-Bit-Ganzzahl. Welcher Bereich lässt sich damit darstellen?

  1. A0 bis 4095
  2. B-2048 bis 2047
  3. C-4096 bis 4095
Antwort und Erläuterung anzeigen

Antwort: B. -2048 bis 2047

Im 12-Bit-Zweierkomplement lässt sich der Bereich von −2¹¹ = −2048 bis 2¹¹ − 1 = 2047 darstellen. Das Immediate wird vor der Rechnung auf 32 Bit (bei RV64 auf 64 Bit) vorzeichenerweitert, sodass auch negative Zahlen direkt addiert werden können. Für größere Konstanten werden mehrere Befehle kombiniert, z. B. die oberen 20 Bit mit lui setzen und die unteren 12 Bit mit addi addieren.

Dieses Thema üben Zur Themenseite

Weitere Fragen zu Befehlssatz und Assembler

  1. Wie wird bei RISC-V üblicherweise eine 32-Bit-Konstante (z. B. 0x12345678), die nicht in ein 12-Bit-Immediate passt, in ein Register geladen?
  2. Welche Kombination ist richtig, wenn bei RISC-V die Konstante 0x12345FFF mit den zwei Befehlen lui und addi erzeugt wird?
  3. Welche Wirkung hat der RISC-V-Befehl auipc (add upper immediate to PC)?
  4. Welchen 32-Bit-Wert enthält t0 nach Ausführung von „addi t0, zero, -1“ in RISC-V (RV32I)?
  5. 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?