Befehlssatz und Assembler

Welchen Wert hat t0, wenn der obige RISC-V-Code ausgeführt wurde?

      li   t0, 0
      li   t1, 4
loop: add  t0, t0, t1
      addi t1, t1, -1
      bnez t1, loop
  1. A4
  2. B10
  3. C6
Antwort und Erläuterung anzeigen

Antwort: B. 10

t1 wird von 4 aus jeweils um 1 verringert und zu t0 addiert. t0 wächst auf 4, 7, 9, 10; sobald t1 0 wird, verzweigt bnez (verzweigt, wenn ungleich 0) nicht mehr, und die Schleife endet. Das Ergebnis ist 4+3+2+1=10. bnez ist ein Pseudobefehl für „bne t1, zero, loop“. Die Form, einen Zähler herunterzuzählen und mit 0 zu vergleichen, ist verbreitet, da keine Vergleichskonstante nötig ist.

Dieses Thema üben Zur Themenseite

Weitere Fragen zu Befehlssatz und Assembler

  1. 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?
  2. Welche Wirkung hat der RISC-V-Befehl „jal ra, func“?
  3. Als welcher Befehl wird der RISC-V-Pseudobefehl „ret“ tatsächlich ausgeführt?
  4. Was ist der Hauptzweck der Festlegung einer Aufrufkonvention (Calling Convention)?
  5. Welche Register werden in der Standard-Aufrufkonvention von RISC-V zur Übergabe von Ganzzahlargumenten und Rückgabewerten verwendet?