Gast
#1435506
Hallo Leute, ich verstehe gerade eine MIPS Assembler Lösung in einer Klausur nicht wirklich. Man sollte da ein C-Code in MIPS übersetzen. do i = i + j; while ( A[i] == k ) Nehmen Sie an, dass die Variablen i, j und k in den Registern $s3, $s4 und $s5 stehen und dass sich die Anfangsadresse von A im Register $s6 befindet. Dabei ist A ein Feld aus 32-Bit Integerzahlen. Verwenden Sie die Register $t0 und $t1 zur Speicherung temporärer Variablen. Muserlösung sagt nun folgendes: Loop: add $s3, $s3, $s4 add $t1, $s3, $s3 add $t1, $t1, $t1 add $t1, $t1, $s6 lw $t0, 0($t1) beq $t0, $s5, Loop Die erste und letzte Zeile ist klar, nicht klar ist die Berechnung der Adresse, in der A[i] steht. Mein i steht ja nach der Berechnung in $s3. $s6 gibt an, wo A anfängt. Müsste es dann nicht add $ti, $s3, $s6 lw $t0, 0($t1) sein? Oder verstehe ich da irgendetwas falsch?