Hallo Stack-Überlauf Gemeinschaft AdressierungBiss/Byte in MIPS
Ich bin derzeit ein Intro zu Computerarchitektur/Organisation Kurs zu nehmen und das Lehrbuch wir werden verwenden Rechnerorganisation und Design by David Patterson und John Hennessey genannt (5. Ausgabe) und sie zeigen ein Beispiel für den Zugriff auf Elemente in einem Array mit MIPS. Das Beispiel, das sie auflisten, lautet etwa so:
Gegeben die C-Code-Zuweisung: g = h + A [8]; wandle folgendes in MIPS um. Wobei g = $ s1, h = $ s2 und die Objektadresse A = $ s3.
sie gehen zu sagen, dass die MIPS Anweisungen, die die gleiche Anweisung in C-Code darstellen, sind wie folgt:
(1) lw $t0, 8($s3) # Temporary register $t0 gets A[8]
(2) add $s1,$s2,$t0 # g = h +A[8]
Dann auf einer anderen Seite, erwähnen die Autoren, dass die Leitung (1) auch geschrieben worden sein könnte wie:
Meine Frage ist, was ist der Unterschied zwischen Zeilen (1) und (3) und warum ist das wichtig?
Danke !!!
Welche Seiten haben diese Ausnahmen? Ich habe die gleiche Ausgabe. Das klingt nicht korrekt. Wenn Sie das 8. Wort in einem Array von Wörtern haben wollen, müssen Sie den Offset als Index * Wortgröße angeben, was 8 * 4 = 32 wäre. – ktb
Ich weiß nicht, warum der Autor sagte, dass diese 2 Zeilen äquivalent waren, 32 ($ s3) 'lädt das achte Wort aus dem Register' $ s3' während '8 ($ s3)' nur das 2. Wort lädt, so dass auf das achte Element im Array zugegriffen wird auf ** 32 + die Basisadresse, die $ s3 ist 32 ($ s3) **. In einem Wort, diese 2 Zeilen sind ** nicht ** äquivalent – Dummy
Seiten 69,71 und 72 – avenger12