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?
- ADie oberen 32 Bit bleiben auf dem ursprünglichen Wert, nur die unteren 32 Bit werden überschrieben
- BEs wird stets nullerweitert auf 64 Bit
- 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.