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>
