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

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.