Gast
#2649843
Hallo zusammen, Entwicklungsumgebung: ARM9 mit Gnu 3.4.4, software floating point library (-msoft-float) und uClibc 0.9.27 In diesem Beispiel wird die double Zahl 1.1 und ihr Speicherordnung im Terminal ausgegeben Merken: 1,1 -> 0x3FF199999999999A Meine Frage: Warurm ist die Speicherung der Doublewert auf dem ARM in big Endiann, obwohl die CPU in Little Endian eingeschaltet ist. Snippet 1 läuft auf einen Win32 Rechner und die Ausgaben im Terminal entsprechen die Erwarteten Speicher Zuordnug. ABER beim Snippet 2 ist der double 1.1 in Big-Endian Format gespeichert. Git's einen Compiler-Schalter oder ähnliches um die FloatingUnit zu sagen, die soll in littleEndian arbeiten? Snippet 1: double d = 1.1; unsigned int* pd = (unsigned int*)&d; printf("d=%E, d.low=%08x, d.high=%08x\n", d, pd[0], pd[1]); Terminal-Output: d=1.100000E+000, d.low=9999999a, d.high=3ff19999 ********************** Snippet 2: double d = 1.1; unsigned int* pd = (unsigned int*)&d; printf("d=%E, d.low=%08x, d.high=%08x\n", d, pd[0], pd[1]); Terminal-Output: d1=1,1000000E d1.low=3FF19999 , d1.high=9999999A Danke imvoraus