![]() |
![]() |
|
![]() |
![]() |
|
Programmierung Rat & Tat für Programmierer |
![]() |
|
Themen-Optionen | Ansicht |
![]() |
#1 |
Inventar
![]() Registriert seit: 24.01.2001
Beiträge: 5.631
|
![]() 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 |
![]() |
![]() |
![]() |
#2 |
Veteran
![]() Registriert seit: 11.11.2000
Beiträge: 391
|
![]() ![]() ...aber trotzdem interessant! ![]()
____________________________________
\"Es ist ein Jammer, dass die Dummköpfe so selbstsicher sind und die Klugen so voller Zweifel.\" Bertrand Russell |
![]() |
![]() |
![]() |
#3 |
Inventar
![]() Registriert seit: 24.01.2001
Beiträge: 5.631
|
![]() Sehr allgemein ein Beitrag zum Thema Programmieren sowie Grundlagen dafür auch (http://kurier.at/pages/html/anwendun...&xmlval_ID_KEY[]=0150&xmlval_PARENT_KEY[]=0146&mdoc_id=2660727&content=main) <- hier zu finden.
Es ist entscheidend welche Architekturen man einsetzt zum Programmieren respektive Anwenden, nicht ohne Grund pusht IBM Linux. Big Endian CPUs sind wesentlich effizienter als Little Endian CPUs. So wie sich 4GL Systeme und RAD-Entwicklungsumgebungen durchsetzen werden, so auch Prozessoren i.a. mit Big Endian, dies ist ein Schlüsselfeld für beschleunigte - logische - Zugriffe auf Datensätze und allgemein Datenworte im Zuge von Algorithmen. Heutzutage gibt es fast ausnahmslos Wald- und Wiesenprogramme von eben solchen Programmierern. Gute Software gibt es nur bei entsprechender Ausbildung des Programmierers in allen relevanten Gebieten des EDV-Bereichs. mfg Kikakater |
![]() |
![]() |
![]() |
Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1) | |
|
|