Skip site navigation (1)Skip section navigation (2)
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>