na ich wrote:
> Der AVR verwendet die 'little endian' Byteorder.
Jein. Er weiß nicht genau, welchen "Byte sex" er gern möchte. ;-)
Größtenteils ist er ja erst einmal ein 8-Bit-Prozessor, hat mithin
gar keine endianess.
Er hat ein paar Befehle, die mit 16-bit-Worten umgehen. Einige
davon (ADIW & Co.) sind little-endian: das Register mit der kleineren
Zahl belegt das niederwertige Byte.
Andere wiederum besitzen eine implizite Endianess: das Ablegen des
PCs auf dem Stack beim CALL und Interrupt, entweder als 16- oder
24-bit-Wort. Diese Operationen sind big endian. Damit muss man
aber gewöhnlich kaum Rechenoperationen durchführen, sodass diese
Tatsache eher wenig auffällig ist. Außerdem sind bei den Rücksprung-
adressen auf dem Stack (die AVR-typisch in 16-bit-Adressierung
arbeiten) die oberen, nicht benutzten Bits nicht notwendigerweise
gleich 0. Das ist der CPU ja egal, einen menschlichen Beobachter
mit einem Debugger kann es dagegen schon einmal verwirren, wenn er
sich den Inhalt des Stacks anguckt...
Für die restlichen Zahlenformate jenseits der genannten Operationen
impliziert der Compiler eine bestimmte endianess, die ist beim
AVR-GCC little endian.