2016-04-07 8 views
-2

Nicht sicher, ob der Offset den Befehl zum Abrufen und Speichern der Anweisung eine Zeile (4 Byte) entfernt vom Programmzähler des Ladewortes in Register $ s0,4 ($ t0) bringt. Wie funktioniert das im Gedächtnis? Bitte geben Sie wenn möglich Beispiele an.

+3

Auch dies wird in _MIPS32 ™ Architektur für Programmierer erläutert. Band II: Der MIPS32 ™ Befehlssatz_ (siehe 'lw'). – Michael

+1

Es sollte wirklich ein Off-Topic sein, "Einfache Google-Suchanfragen beantworten die Frage." –

+1

wie in [http://stackoverflow.com/questions/36467299/how-do-i-translate-an-immediateregister-into-machine-code], wird ein Handbuch Anleitung sagen Sie – Tommylee2k

Antwort

1

Die Funktionalität von LW und SW kann im MIPS-Befehlssatz gelesen werden, was Michael bereits gesagt hat.

Aber, um es schnell zu machen, gebe ich immer noch eine Antwort hier. LW steht für Lastwort. Es lädt einen 32-Bit-Wortwert in ein Zielregister (rt) von einer Adresse, in der dieser Wert gespeichert ist.

LW rt, offset(base) 

Nehmen wir ein einfaches Beispiel machen:

LUI T0, 0x8033 
LW T1, 0x2550(T0) 

Der obige Code jetzt die 32-Bit-Wortwert an der Adresse befindet sich laden würden:

0x80332550 

Der Wert in LUI ist die obere die Hälfte der Adresse, während der angegebene Offset 0x2550 die untere Hälfte ist. Jetzt lädt MIPS einfach den 32-Bit-Wert von 0x80332550.

Sagen wir 0x80332550 folgenden Wert enthält:

0x80332550: 25 66 99 88 77 14 22 66 

Nach dem LW-Befehl würde T1 nun den Wert 0x25669988 enthalten. (Wenn auf Big-Endian, auf Little-Endian wäre es 0x88996625)

SW macht fast das gleiche wie LW, nur dass es einen 32-Bit-Wert an die angegebene Adresse speichert, anstatt es zu laden. Das rt-Register fungiert in diesem Fall als Werthalter.

+1

Einige Nitpicking: '$ t0' ist die Basis, 0x2555 ist der _offset_. Und 0x80332555 wäre keine gültige Adresse, um ein Wort zu laden, da es nicht wortorientiert ist. – Michael

+0

@Michael Woops. Das wurde behoben. – Tetragrammaton

+1

* MIPS erkennt, dass 0x8033 und 0x2550 verknüpft sind * ist eine seltsame Wortwahl. Es ist eher so, dass MIPS das tut, was es gesagt hat, und dies ist eine Möglichkeit, das gewünschte Verhalten zu erreichen. MIPS muss nichts erkennen, nur die Mathematik machen. –

Verwandte Themen