Little Endian oder Big Endian Format?

Moderator (Firma: Titel) Persönliche Seite #940110
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.
#940118
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.
Gast #940119
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?
#940188
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.
#940270
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.

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