MIPS: MARS-Editor zeigt nicht korrekten Wert für ASCII-String an?

Ich verwende den MARS-Simulator , um die MIPS-CPU zu erkunden. Ich habe ein einfaches Assemblerprogramm:

.data
ascii1: .asciiz "8C@2"

Ich erwarte, dass der Wert in der Speicheradresse für ascii1 0x38434032 ist (das Hex-Äquivalent für das ASCII-Bitmuster für "8C@2"). Aber es ist nicht. Hier ist ein Screenshot von dem, was MARS zeigt: http://img442.imageshack.us/i/mars1.jpg/

Kann jemand erklären, warum der Wert in 0x1001000 nicht 0x38434032 ist.

Antworten (2)

Sie sind auf das Konzept der Big-Endian- und Little-Endian-Bytereihenfolge gestoßen .

Du erwartest:

0x38434032

Aber bekam:

0x32404338

Beachten Sie, dass die Bytes einfach in umgekehrter Reihenfolge sind:

38 43 40 32
32 40 43 38

Wikipedia erklärt es kurz:

Beim Rechnen ist Endianness die Anordnung von einzeln adressierbaren Untereinheiten (Wörtern, Bytes oder sogar Bits) innerhalb eines längeren Datenworts, das in einem externen Speicher gespeichert ist. Die typischsten Fälle sind die Anordnung von Bytes innerhalb eines 16-, 32- oder 64-Bit-Wortes, wobei Endianness oft einfach als Byte-Reihenfolge bezeichnet wird. 1 Der übliche Unterschied besteht zwischen dem höchstwertigen und dem niederwertigsten Byte zuerst, Big-Endian bzw. Little-Endian genannt.

MIPS ist im Allgemeinen Big Endian, während die Prozessoren, an die Sie möglicherweise gewöhnt sind (z. B. Intel), Little Endian sind.

Bei vielen Prozessoren können Sie in einigen Konfigurationsbits festlegen, ob sie Big Endian oder Little Endian sind.

Danke schön. Ich frage mich, ob es eine Möglichkeit gibt, die Endian-Einstellung in MARS zu ändern ...?
Ich denke, es war eine bewusste Entscheidung, die nicht einfach geändert werden kann.

Dies kann im Hilfethema „Debugging“ nachgelesen werden: „Alle Daten werden in Little-Endian-Byte-Reihenfolge gespeichert (jedes Wort besteht aus Byte 3, gefolgt von Byte 2, dann 1, dann 0). Beachten Sie, dass jedes Wort 4 Zeichen von a enthalten kann Zeichenfolge und diese 4 Zeichen erscheinen in umgekehrter Reihenfolge wie das Zeichenfolgenliteral."