Befehlssatz und Assembler

Um das Wievielfache des Werts von a0 ist t0 nach dem RISC-V-Befehl „slli t0, a0, 3“ größer (Überlauf nicht beachtet)?

  1. A8-Fache
  2. B3-Fache
  3. C6-Fache
Antwort und Erläuterung anzeigen

Antwort: A. 8-Fache

slli (shift left logical immediate) verschiebt den Registerwert um die angegebene Bitzahl nach links und füllt die freien unteren Bits mit 0. Im Binärsystem verdoppelt eine Verschiebung um ein Bit den Wert, bei 3 Bit also 2³ = das 8-Fache. Da dies oft schneller als ein Multiplikationsbefehl ist, ersetzen Compiler Multiplikationen mit Zweierpotenzen durch Schiebeoperationen. Es wird auch häufig zur Berechnung von Adressen von Arrayelementen verwendet.

Dieses Thema üben Zur Themenseite

Weitere Fragen zu Befehlssatz und Assembler

  1. In a0 steht die Anfangsadresse eines Arrays a vom Typ int (4 Byte), in a1 der Index i. Was lädt der obige Code in a2?
  2. Welche Aussage zu Verfahren ist richtig, bei denen Rechenbefehle wie „add eax, [rbx]“ bei x86 Werte im Speicher direkt verwenden können?
  3. Welche Erklärung, wie heutige leistungsfähige x86-CPUs komplexe Befehle intern ausführen, ist richtig?
  4. Welche Befehle fügt die M-Erweiterung von RISC-V dem Basis-Ganzzahlbefehlssatz hinzu?
  5. Was ist der Hauptzweck der C-Erweiterung (komprimierte Befehle) von RISC-V?