Forum: Mikrocontroller und Digitale Elektronik Little Endian oder Big Endian Format?


von Owen S. (senmeis)


Lesenswert?

Hallo,

Es gibt eine Option in manchen Protokollstack: Little Endian (Intel) 
oder Big Endian (Motorola) Format. Ich denke, diese ist sinnvoll für 16- 
oder 32-Bit uC wegen mehreren Bytes. Hat diese Bedeutungen für 8-Bit uC?

MfG
Senmeis

von Fabio S. (codehamster)


Lesenswert?

http://de.wikipedia.org/wiki/Byte-Reihenfolge

Kommt auf den Prozessor an! Schau in deinem UserGuide dort steht 
sicherlich auch wie die Bit's der Bytes organisiert sind! hatte auch 
schon Prozessoren wo die Bitreihenfolge gedreht war!

von Andreas K. (a-k)


Lesenswert?

Owen Senmeis wrote:

> Hat diese Bedeutungen für 8-Bit uC?

Ja, denn auch 8bit Micros pflegen mit Daten grösser als 8 Bits zu 
arbeiten. Und dann werden die irgendwie im Speicher angelegt.

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

>Hat diese Bedeutungen für 8-Bit uC?
Eine Bedeutung hat Little/Big-Endian für einen Prozessor nur, wenn er 
mit anderen (externen) Teilnehmern kommuniziert, und dabei andere Daten 
als nur Zeichen (chars) überträgt.

Wie der uP intern seine Daten ablegt, ist an sich egal, solange man 
nicht z.B. ein char-Array auf long castet. Und das passiert am ehesten, 
wenn von aussen byteweise irgendwelche Daten hereinkommen.

von Andreas K. (a-k)


Lesenswert?

int x = 0x1234;

*(char *)&x liefert bei little- und big-endian unterschiedliche 
Ergebnisse, ganz egal ob der Prozessor 8/16/32/64bittig ist.

Bei sauberer Programmierung ist das kein Problem. Aber manche Leute 
verwenden auch gern mal unions in denen Typen verschiedener Grösse 
zwecks Umwandlung übereinander liegen - und finden das ok.

von Gast (Gast)


Lesenswert?

mal eine Frage zwischen rein, wenn ich vom motorolla-format ausgehe und 
dann auf intel umwandle, muss ich dann alle bits spiegeln oder nur 
jeweils die Bits von einem Byte, also die Reihenfolge der Bytes bleibt 
gleich, nur die Bits in den Bytes werden gedreht, oder wird alle 
gedreht?

von Andreas K. (a-k)


Lesenswert?

Nur die Bytes. Die Bits werden zwar manchmal anders numeriert, aber 
deren Wertigkeit im Byte ändet sich nicht.

von ARM-Fan (Gast)


Lesenswert?

Es werden KEINE Bits gespiegelt.
Es geht beim Thema Endianness lediglich um die Reihenfolge der BYTES.

von Andreas K. (a-k)


Lesenswert?

@lkmiller: Formal korrekt aber ein bischen krass formuliert. Es spielt 
ja auch dann eine Rolle, wenn man einfach nur mit vorgegebenen 
Datenstrukturen umgeht. Beispielsweise einer bei Controllern recht 
verbreiteten SD-Card mit FAT Filesystem.

von Klaus (Gast)


Lesenswert?

Ist es bei nem 8-Bit Controller wie z. B. Atmel AVR nicht nur Sache des 
Compiler, ob big oder little endian verwendet wird?

von Andreas K. (a-k)


Lesenswert?

Nicht ganz. Es gibt ein paar Stellen die das nahelegen:

- 16bit-Werte in I/O-Registern sind little-endian, soweit diese Register 
überhaupt direkt hintereinander stehen.

- Ebenso die Anordnung in Prozessor-Registern, zumal Register in den 
RAM-Bereich gemappt werden.

- Und die Return-Adressen auf dem Stack sind daher konsequenterweise bei 
AVRs big endian.

von Andreas K. (a-k)


Lesenswert?

Ich kenne nur einen 8bit Prozessor, bei dem hardwareseitig die Anordnung 
von 16bit Werten nirgends vorkommt, nicht in den Befehlen, nicht den 
Vektoren, nicht auf dem Stack, einfach nirgends: SC/MP.

von Frank (Gast)


Lesenswert?

@Andreas
Von wann ist der 8Bitter? 1943?

von Andreas K. (a-k)


Lesenswert?

Fast. Aus den 70ern, vorrangig auf Embedded Systems (sic) und günstigen 
Preis optimiert. Anfangs in PMOS gebaut war er wohl einer der 
langsamsten Micros überhaupt (12-46µs pro Befehl).

Hierzulande eigentlich nur deshalb in grösseren Kreisen bekannt, weil 
Elektor damals recht ernsthaft daran rumbaute. Ein 8080 war damals für 
Bastlerkreise prohibitiv teuer.

Zu den interessanten Eigenschaften gehörte, dass es keinen direkten 
Sprungbefehl gab, der sich weiter als 128 Bytes wegbewegte (und auch 
keinen Unterprogrammaufruf). Schon in einem einem kleinen 2KB Tiny-Basic 
wimmelte es infolgedessen von Sprungkaskaden von einem Ende zum anderen.

von crazy horse (Gast)


Lesenswert?

das würde ich dann aber nicht "interessante Eigenschaft" nennen, eher 
mangelnde Realitätsnähe des Chipddesigners :-)

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
Noch kein Account? Hier anmelden.