Date: Mon, 20 Nov 2000 16:40:06 +0100 From: Thomas Moestl <tmoestl@gmx.net> To: freebsd-hackers@freebsd.org Subject: Re: Byte order? Message-ID: <20001120164006.A1624@crow.dom2ip.de> In-Reply-To: <00112017175200.47740@pro.lookanswer.com>; from havoc@lookanswer.com on Mon, Nov 20, 2000 at 05:17:00PM %2B0200 References: <00112017175200.47740@pro.lookanswer.com>
next in thread | previous in thread | raw e-mail | index | archive | help
> I know, that x86 is big endian architecture > but simple programm like this: > > #include <stdio.h> > #include <sys/param.h> > main () { > /* Are we little or big endian? From Harbison&Steele. */ > union > { > long l; > char c[sizeof (long)]; > } u; > u.l = 1; > printf ("Little endian? %s\n", (u.c[sizeof (long) - 1] == 1) ? "yes" : "no"); > #if BYTE_ORDER == BIG_ENDIAN > printf("Big endian\n"); > #elif BYTE_ORDER == LITTLE_ENDIAN > printf("Little endian\n"); > #else > printf("Unknown\n"); > #endif > } > > Give me a strange result: > Little endian? no > Little endian This program gets it wrong. When the last byte of a long is set after the long was set to 1, we have a big endian architecture (the "little" end is at the 4th byte, so the "big end" is at the 1st byte). > On my FreeBSD 4.2-BETA BYTE_ORDER = LITTLE_ENDIAN! > I`m very confused and some programms detect my machine as Little Endian, by > example freetds. The x86 architecture _is_ little endian. - Thomas To Unsubscribe: send mail to majordomo@FreeBSD.org with "unsubscribe freebsd-hackers" in the body of the message
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20001120164006.A1624>