Befehlssatz und Assembler

Wie wird der gelesene 32-Bit-Wert in das 64-Bit-Register eingetragen, wenn bei RV64I der Befehl lw ausgeführt wird?

  1. ADie oberen 32 Bit bleiben auf dem ursprünglichen Wert, nur die unteren 32 Bit werden überschrieben
  2. BEs wird stets nullerweitert auf 64 Bit
  3. CEs wird vorzeichenerweitert auf 64 Bit (für Nullerweiterung wird lwu verwendet)
Antwort und Erläuterung anzeigen

Antwort: C. Es wird vorzeichenerweitert auf 64 Bit (für Nullerweiterung wird lwu verwendet)

lw bei RV64I erweitert den 32-Bit-Wert vorzeichenrichtig in das 64-Bit-Register, und lwu, das vorzeichenlos liest, füllt oben mit 0 auf. Würden die oberen Bits auf dem früheren Wert bleiben, entstünde eine Abhängigkeit vom früheren Wert, die die Out-of-Order-Ausführung behindert; deshalb macht RISC-V das nicht. Für 32-Bit-Rechnungen gibt es Befehle mit „w“ wie addw, die das Ergebnis als 32 Bit berechnen und dann vorzeichenerweitern.

Dieses Thema üben Zur Themenseite

Weitere Fragen zu Befehlssatz und Assembler

  1. Welche Beschreibung des ABI (Application Binary Interface) ist richtig?
  2. Mit welchem Befehl erfolgt in RISC-V im Allgemeinen ein Aufruf über einen C-Funktionszeiger „(*fp)(x)“?
  3. Welche Aussage gilt für zwei CPUs, die dieselbe Befehlssatzarchitektur (ISA) verwenden?
  4. Welche Eigenschaft einer Load-Store-Architektur wie RISC-V ist richtig?
  5. Welche Eigenschaft des RISC-V-Registers x0 (zero) ist richtig?