Verstehe MIPS Übersetzung nicht

Gast #1435506
Lesenswert?
• ▲
▼
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?

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren