Das folgende C-Programm berechnet das Produkt zweier Zahlen i und j durch
fortgesetzte Addition. Gehen Sie davon aus, dass die Variablen in i und j positive
Ganzzahlen (>0) enthalten.
1// Berechne r = i * j
2int r, i, j;
3r = 0;
4while (i > 0 ) {
5 r = r + j:
6 i = i - 1;
7}
Das folgende RISC-V-Assemblerprogramm ist die Übersetzung des obigen C-Programms.
Dabei ist die Variable i in Register a0, die Variable j in Register a1 und die Variable r in Register a2 enthalten.
Leider sind im Programm drei Details verlorengegangen.
Füllen Sie die entsprechenden Lücken so aus, dass das angegebene Assemblerprogramm ebenfalls r = i × j berechnet!
1mult:
2 li a2, __
3loop:
4 b__ a0, zero, end
5 add a2, a2, __
6 addi a0, a0, -1
7 j loop
8end:
9 ret