Befehlssatz und Assembler

Welcher Unterschied zwischen RISC-V und x86 beim Mechanismus bedingter Verzweigungen ist richtig?

  1. ARISC-V verzweigt anhand von Flags, bei x86 vergleichen Verzweigungsbefehle zwei Register direkt
  2. BKeine der beiden hat Befehle für bedingte Verzweigungen, das Sprungziel wird per Tabellenzugriff bestimmt
  3. CBei RISC-V vergleichen Verzweigungsbefehle zwei Register direkt, bei x86 verzweigt ein Befehl anhand der von einem Vergleichsbefehl gesetzten Flags
Antwort und Erläuterung anzeigen

Antwort: C. Bei RISC-V vergleichen Verzweigungsbefehle zwei Register direkt, bei x86 verzweigt ein Befehl anhand der von einem Vergleichsbefehl gesetzten Flags

Bei x86 vergleicht „cmp eax, ebx“ und setzt Flags (Bedingungscodes) wie Null und Übertrag, und das folgende „je“ oder „jl“ verzweigt anhand der Flags. RISC-V hat keine Flags; der Verzweigungsbefehl selbst vergleicht zwei Register, etwa „beq a0, a1, L“ oder „blt a0, a1, L“. Ohne impliziten Zustand wie Flags lassen sich Abhängigkeiten beim Umordnen und bei gleichzeitiger Ausführung von Befehlen leichter verfolgen.

Dieses Thema üben Zur Themenseite

Weitere Fragen zu Befehlssatz und Assembler

  1. Welche Wirkung hat der RISC-V-Befehl „slt t0, a0, a1“?
  2. Welchen Wert hat t0, wenn der obige RISC-V-Code ausgeführt wurde?
  3. Der bedingte Verzweigungsbefehl von RISC-V (B-Format) gibt den Abstand zum Ziel als vorzeichenbehaftete 13-Bit-Bytezahl an, deren niedrigstes Bit stets 0 ist und nicht in den Befehl aufgenommen wird. Welcher Bereich wird von einem Verzweigungsbefehl direkt erreicht?
  4. Welche Wirkung hat der RISC-V-Befehl „jal ra, func“?
  5. Als welcher Befehl wird der RISC-V-Pseudobefehl „ret“ tatsächlich ausgeführt?