Befehlssatz und Assembler

In RISC-V-Befehlen sind die Felder zur Registerangabe (rd, rs1, rs2) jeweils 5 Bit lang. Welche Begründung ist richtig?

  1. AWeil die Registerbreite 5 Bit beträgt
  2. BWeil ein Befehl bis zu fünf Register verwenden kann
  3. CWeil es 32 Ganzzahlregister gibt, die mit 2⁵ = 32 Möglichkeiten angegeben werden können
Antwort und Erläuterung anzeigen

Antwort: C. Weil es 32 Ganzzahlregister gibt, die mit 2⁵ = 32 Möglichkeiten angegeben werden können

Ein Befehl im R-Format besteht von oben nach unten aus funct7 (7 Bit), rs2 (5), rs1 (5), funct3 (3), rd (5) und opcode (7), zusammen 32 Bit. Bei 32 Registern genügen 5 Bit für die Nummer. Bei 64 Registern wären je 6 Bit nötig, bei drei Feldern also 3 Bit mehr, sodass weniger Bits für Immediates und Befehlsarten blieben. Die Registerzahl hängt also mit der Befehlsform zusammen.

Dieses Thema üben Zur Themenseite

Weitere Fragen zu Befehlssatz und Assembler

  1. Das Immediate des RISC-V-Befehls addi ist eine vorzeichenbehaftete 12-Bit-Ganzzahl. Welcher Bereich lässt sich damit darstellen?
  2. 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?
  3. Welche Kombination ist richtig, wenn bei RISC-V die Konstante 0x12345FFF mit den zwei Befehlen lui und addi erzeugt wird?
  4. Welche Wirkung hat der RISC-V-Befehl auipc (add upper immediate to PC)?
  5. Welchen 32-Bit-Wert enthält t0 nach Ausführung von „addi t0, zero, -1“ in RISC-V (RV32I)?