Befehlssatz und Assembler

Welcher Vorteil der PC-relativen Adressierung bei Verzweigungen und Sprüngen ist richtig?

  1. AEgal wie weit das Ziel entfernt ist, wird es stets mit einem Befehl erreicht
  2. BEine Sprungvorhersage ist nicht mehr nötig, und die Pipeline bleibt nie stehen
  3. CDas Programm kann an jede beliebige Speicheradresse geladen und ohne Umschreiben der Befehle ausgeführt werden
Antwort und Erläuterung anzeigen

Antwort: C. Das Programm kann an jede beliebige Speicheradresse geladen und ohne Umschreiben der Befehle ausgeführt werden

PC-relative Verzweigungen geben das Ziel als Abstand „so viele Byte von hier“ an; wird das ganze Programm verschoben, bleibt der Abstand gleich, und es läuft unverändert. Dies ist die Grundlage für positionsunabhängigen Code (PIC), wie er z. B. in Shared Libraries verwendet wird. Da die Zahl der Bits für den Abstand begrenzt ist, werden für weite Sprünge auipc und jalr kombiniert. Der Bedarf an Sprungvorhersage hat mit der Darstellung nichts zu tun.

Dieses Thema üben Zur Themenseite

Weitere Fragen zu Befehlssatz und Assembler

  1. Welche Aussage zur Befehlslänge der RISC-V-Basisbefehle und der x86-Befehle ist richtig?
  2. Welcher Vorteil fester Befehlslänge ist am zutreffendsten?
  3. In RISC-V-Befehlen sind die Felder zur Registerangabe (rd, rs1, rs2) jeweils 5 Bit lang. Welche Begründung ist richtig?
  4. Das Immediate des RISC-V-Befehls addi ist eine vorzeichenbehaftete 12-Bit-Ganzzahl. Welcher Bereich lässt sich damit darstellen?
  5. 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?