Befehlssatz und Assembler

In welchen Befehl setzt der Assembler den RISC-V-Pseudobefehl „nop“ (tut nichts) tatsächlich um?

  1. Aaddi x0, x0, 0
  2. Bjal ra, 0
  3. Clw x0, 0(sp)
Antwort und Erläuterung anzeigen

Antwort: A. addi x0, x0, 0

RISC-V hat keinen eigenen Befehl für „nichts tun“, nop wird als „addi x0, x0, 0“ dargestellt. Da Schreibzugriffe auf x0 verworfen werden, ändert sich weder in Registern noch im Speicher etwas. Entsprechend ist „mv rd, rs“ gleich „addi rd, rs, 0“, „j label“ gleich „jal x0, label“ und „ret“ gleich „jalr x0, 0(ra)“. Der Gedanke im Entwurf von RISC-V ist, durch Nutzung von x0 die Zahl der Befehlsarten klein zu halten.

Dieses Thema üben Zur Themenseite

Weitere Fragen zu Befehlssatz und Assembler

  1. Worin unterscheiden sich die RISC-V-Befehle „add“ und „addi“?
  2. Welchen Wert hat das Register a2 nach Ausführung des obigen RISC-V-Codes?
  3. Welche Wirkung hat der RISC-V-Befehl „lw t0, 8(sp)“?
  4. Wie wird beim RISC-V-Verzweigungsbefehl „beq a0, a1, label“ die Adresse des Sprungziels label dargestellt?
  5. Welcher Vorteil der PC-relativen Adressierung bei Verzweigungen und Sprüngen ist richtig?