WCM - Das österreichische Computer Magazin Forenübersicht
 

Zurück   WCM Forum > Rat & Tat > Programmierung

Programmierung Rat & Tat für Programmierer

Microsoft KARRIERECAMPUS

Antwort
 
Themen-Optionen Ansicht
Alt 27.07.2001, 13:02   #1
kikakater
Inventar
 
Registriert seit: 24.01.2001
Beiträge: 5.631


Standard Big im Gegensatz zu Little Endian

Hallo !

Ich wollte hier nur mal einen Tipp für das portable Programmieren erwähnen, dessen zugrundeliegende Problematik früher oder später einem bewußt wird - sprich unterkommt und ja irgendwie gelöst werden will bzw. soll.

Es geht um das der Reihe nach vozunehmende Ablegen und Aufnehmen von Bytes - Speicherzelleninhalten - durch den Prozessor bezogen auf die Datenwortbreiten Long - Word - Byte.

Wie legt eine CPU die einzelnen Bytes eines Long(word)s im Speicher ab ? Gemeint ist damit, in welcher Reihenfolge kommen die nieder- bzw. höherwertigen Bytes im Speicher (mit aufsteigenden Adressen) zum Liegen ? - Und werden von dort auch so wieder geholt ...

Es gibt zwei Arten dies zu bewerkstelligen:

1.) Little Endian: Das LEAST SIGNIFICANT BYTE wird an der (Basis-)Adresse + Offset 0 abgelegt, danach kommt das HIGH LOW BYTE, dann das LOW HIGH und zuletzt das HIGH HIGH Byte.

D.h: Eine Zahl wie 256 dez wird als 0 0 1 0 (Byteschreibweise) codiert und so (0 1 0 0) im Speicher eines Computers mit Little Endian Prozessor abgelegt und auch wiederum gefetcht/geladen/geholt.

Die Reihenfolge lautet also folgendermaßen:

Zahlenwert und Rang Offset
Niederwertigstes Byte 0
Niederwertiges Byte 1
Höherwertiges Byte 2
Höchstwertigstes Byte 3

Der 80x86 Prozessor ist so ein Little Endian Prozessor, dies auch deshalb weil es von einer 8- über eine 16 bit zu einer 32bit CPU gekommen ist und ein wenig oder sehr verständiger Entwickler/Entwicklerteam es wenig respektive sehr verstanden hat so einen Unsinn zu machen.

Für einen CPU Generation s Wechsel eine sehr gute Strategie (Marketing), technisch gesehen - auf der logischen Programmierebene - jedoch ein Graus.

Warum ?

Eine 2.) Big Endian CPU - bei der die Datenworte beginnend mit dem höchstwertigen Byte zuerst abgelegt sowie geholt werden, ist für verschiedene Dinge von extremem Vorteil.

Der Quatsch mit Little Endian verursacht sogar 'Elektrosmog' in Form von mehr Elektronen, die sich am Material (Atomen) reiben etc. Der Energieverbrauch könnte geringer sein, wenn in der Art 'Big Endian' (also in dieser Art) gespeichert werden würde.

Vergleiche zwischen Longs z.B. können nach dem 1.Byte, resp. 2.Byte - nur im Worst Case - nach dem 4.Byte beendet sprich entschieden werden, dies ist - makroprogrammatisch, sprich auf der logischen Programmierebene - bei einem zusammengesetzten Datentyp mit Bitstruktur der Fall.

Ebenso braucht man nicht alle Bytes laden, wenn man das Vorzeichen eines Datenwortes erhalten bzw. wissen möchte. Das Laden des höchstwertigen - des damit (mit Big Endian) ersten - Bytes und ein Test auf dessen Bit 7 - dem Vorzeichenbit - reicht aus.


Tja Intel weiß wie man die Zeit wie einen Strudelteig in die Länge zieht, die Schubladen dieser Welt sind groß, geduldig, im Übrigen noch immer halb leer usw. ... sprich es werden Sachen gemacht, um proprietär zu sein, damit man eine 'billig(e/re)' CPU im Vergleich zu einem 68000er etc. verkaufen kann. Ein reiner Marketingansatz, um die Massen mit solchen 'Problemen' an sich (Intel) zu binden.

Die Zeit ist reif für Big Endian Maschinen, da sie programmtechnische und ursächlich damit zusammenhängende physikalische Vorteile haben, insofern als weniger Byteladereien und Bitvergleichereien weniger Stromverbrauch, mehr Zeitgewinn, sprich schnellere CPUs und damit schnellere Programme mit weniger Müll in Form von höherem Energieverbrauch ergeben.

mfg
Kikakater
kikakater ist offline   Mit Zitat antworten
Antwort


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.

Gehe zu


Alle Zeitangaben in WEZ +2. Es ist jetzt 17:35 Uhr.


Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Forum SEO by Zoints
© 2009 FSL Verlag