Endianness (was: Re: audio-cd)

From: Christian Weisgerber <naddy(at)mips.inka.de>
Date: Wed, 20 Mar 2002 02:59:18 +0000 (UTC)

Stefan Jahn <stefan.jahn(at)nemesis-sektor.de> wrote:

> > einfach davon aus auf einer 32-Bit-, Little-Endian-Maschine mit
> ^^^^^^^^^^^^^^^^^^^^^^
> > Maschinen mit welcher Endianness ich die Daten auslese, transformiere,
> ^^^^^^^^^^
> *am Kopf kratz* ... könnte mir einer erklären was /Endian/
> heisst?

Auf den meisten heutigen Rechnerarchitekturen ist die kleinste
einzeln ansprechbare Speichereinheit ein (8-Bit-)Byte. Es können
aber auch größere Typen, die aus mehreren Bytes bestehen, als Einheit
verarbeitet werden. Wie aber werden die einzelnen Bytes eines solchen
Typs im Speicher angeordnet?

Betrachten wir o.B.d.A. eine in 32 Bit dargestellte Ganzzahl,

      0x44332211

die in vier Bytes zerfällt. Zwei Arten der Anordnung sind verbreitet:

Adresse 0 1 2 3

a) 0x44 0x33 0x22 0x11 (höchstwertiges Byte zuerst,
                             engl. »most significant byte first«, MSB)

b) 0x11 0x22 0x33 0x44 (niederstwertiges Byte zuerst,
                             engl. »least significant byte first«, LSB)

Es gibt keine technischen Gründe das eine oder andere Schema zu
bevorzugen, die Wahl ist allein eine Frage der Konvention. Anordnung
(a) wird auch »big-endian«, (b) »little-endian« genannt.

Die Begriffe gehen auf Jonathan Swifts Satire _Gulliver's Travels_
(1726) zurück, durch Vermittlung über den Aufsatz _On Holy Wars and
a Plea for Peace_ von Danny Cohen, USC/ISI IEN 137, vom 1. April
1980. (Quelle: Eric S. Raymond, _The New Hacker's Dictionary_,
1993). Bei Swift beziehen sich die Begriffe auf die eigentlich
bedeutungslose Glaubensfrage, an welchem Ende man ein Ei aufschlägt.
Also »big end«/»little end« mit dem Adjektivsuffix »-ian«. Für die
etwas schwerfällige Substantivierung hat sich »-ness« eingebürgert;
bisweilen spricht man auch von »byte sex«.

*Wichtig* ist allein, dass Daten, die in der einen Anordnung abgelegt
worden sind, in dieser auch wieder ausgelesen oder durch Vertauschung
wieder richtig angeordnet werden. Das ist ein Fallstrick beim
Austausch von Daten in heterogenen Umgebungen.

Populäre Architekturen:
Little-endian: alpha, arm, i386, vax
Big-endian: hppa, m68k, powerpc, sparc

Endianness betrifft natürlich auch die Bitebene, allerdings kommt
man damit in der Praxis selten in Berührung, da auf Bytes atomar
zugegriffen wird und Schnittstellen, die Daten serialisieren, dies
normalerweise vollständig in Hardware abwickeln. Einer der wenigen
Fälle, wo man sich damit auseinandersetzen muss, sind Bitmapformate.

-- 
Christian "naddy" Weisgerber                          naddy(at)mips.inka.de
To Unsubscribe: send mail to majordomo(at)de.FreeBSD.org
with "unsubscribe de-bsd-questions" in the body of the message
Received on Wed 20 Mar 2002 - 04:30:26 CET

search this site