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?
add $s3, $s3, $s4 ; i = i + j add $t1, $s3, $s3 ; t1 = 2 * i add $t1, $t1, $t1 ; t1 = 2 * t1 ( = 4 * i) add $t1, $t1, $s6 ; t1 = (4 * i) + Anfangsadresse lw $t0, 0($t1) beq $t0, $s5, Loop 32-Bit = 4-Bytes...
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.