comp.lang.ada
 help / color / mirror / Atom feed
From: Kelly Grant <grantk@nosc.mil>
Subject: Re: Endian and Ada
Date: 1996/04/09
Date: 1996-04-09T00:00:00+00:00	[thread overview]
Message-ID: <1996Apr9.160008.27942@nosc.mil> (raw)
In-Reply-To: 4kamb9$om2@flute.aix.calpoly.edu

mporcell@flute.aix.calpoly.edu (Michael Anthony Porcelli) wrote:
>I'm taking a computer architecture class and my eyes have been opened to the
>incredible lack of progress that computer science has made in the area of
>architecture-independant programming.  One of the main problems that my
>professor likes to point out the endian problem and the fact that so much
>software is *not* endian-independant (due mainly to the widespread use of C
>and C++).  However, he is not familiar enough with Ada (nor am I) to know if
>Ada is endian-independant.  I'm almost positive that it's *possible* to make
>endian-dependant code using unchecked programming (necessary for systems
>writing).  I was wondering, however, if the day-to-day Ada software out
>there is written endian-independant (i.e. the language facilities used in
>most day-to-day programming don't depend on whether your architecture is
>"big" endian or "little" endian.)
>

We are currently facing this issue.  We are working on control software on Intel 
platforms communicating with Motorola (and other) hardware on remote platforms.  
We are passing data across radio modems, and byte ordering is a concern.  We are 
going to use "Network Byte Ordering" (I don't know whose standard this is, but in 
the Win32 environment (winsock specifically) we have methods like NtoHS (Network 
to Host System) that will know whether to swap bytes or not).  I think the 
network byte ordering is big endian, but I don't know for certain.

Of course you can try to implement certain tricks.  For instance, you could 
define a standard that the first 4 byte value read is '1', and determine the 
endian-ness of the data by examining that known value.  Perhaps the first entry 
in a file, or the first data packet shared between cooperating computers...

It is *not* possible for a language to be endian-independant. Assumptions must be 
made and it is not possible to know which endian a particular file or packet is 
using just by looking at the data.  The use of C or C++ is not an issue. When an 
application writes an multi-byte integer to a file, it will commit itself to big 
endian or little endian as soon as it is written, generally based on the base 
architecture.

Kelly






  parent reply	other threads:[~1996-04-09  0:00 UTC|newest]

Thread overview: 18+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
1996-04-08  0:00 Endian and Ada Michael Anthony Porcelli
1996-04-08  0:00 ` Robert A Duff
1996-04-08  0:00 ` Mike Young
1996-04-09  0:00   ` Joseph Wisniewski
1996-04-08  0:00 ` Robert Dewar
1996-04-09  0:00   ` Dale Pontius
1996-04-09  0:00     ` Theodore E. Dennison
1996-04-09  0:00     ` Thomas Koenig
1996-04-08  0:00 ` Theodore E. Dennison
1996-04-09  0:00 ` Kelly Grant [this message]
1996-04-09  0:00   ` Mike Young
1996-04-09  0:00 ` Michael Anthony Porcelli
1996-04-10  0:00   ` Robert A Duff
1996-04-11  0:00   ` Larry Kilgallen
1996-04-09  0:00 ` Michael Anthony Porcelli
1996-04-14  0:00 ` LJMetzger
1996-04-17  0:00   ` phil
  -- strict thread matches above, loose matches on Subject: below --
1996-04-18  0:00 Bob Crispen
replies disabled

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox