comp.lang.ada
 help / color / mirror / Atom feed
From: "David C. Hoos" <david.c.hoos.sr@ada95.com>
Subject: Re: Little Endian -> Big Endian (Ada95 / GNAT)
Date: Wed, 25 Feb 2004 06:23:28 -0600
Date: 2004-02-25T06:23:28-06:00	[thread overview]
Message-ID: <Cr0%b.13685$0k2.7465@bignews4.bellsouth.net> (raw)
In-Reply-To: bac31daa.0402250138.fc4ed92@posting.google.com


"James Amor" <jamesamor@hotmail.com> wrote in message
news:bac31daa.0402250138.fc4ed92@posting.google.com...
> Hi,
>
> At present I am writing a tool to create a file which contains various
> extracted ELF symbols. The output data structure, a list of unsigned
> 32's, is to be used as part of an image on a PowerPC target.
>
> Problem: As it is compiled on Wintel the tool is producing an output
> in little endian and PowerPC is big endian!
>
> Question: How do I modify my code to write the output in big endian
> format?

If you use Stream IO to write the data, then you can take advantage of
the solution the GNAT folks created for Distributed Systems (Annex E
of the Ada Lanuage Reference Manual).

This solution is embodied in the glade supplement to gant.

For example, if you're using gant-3.15p, the corresponding glade can
be found at ftp://ftp.cs.nyu.edu/pub/gnat/3.15p/glade

Then, replace the file s-stratt.adb in your standard gnat distribution
with the one from the same version of glade, and re-compile and
rebuild the library files (.a), and you have what you want.  Now, as
long as your types are declared the same on both platforms (with no
representation clauses) you will have platform-independence.

I'm not sure why GNAT didn't do this from the beginning -- perhaps because
they didn't provide an implementation of the Distributed Systems Annex at
the beginning.  Also, there is a small performance penalty paid for
shuffling bits around to achieve platform independence.

Hope this helps.




  reply	other threads:[~2004-02-25 12:23 UTC|newest]

Thread overview: 18+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2004-02-25  9:38 Little Endian -> Big Endian (Ada95 / GNAT) James Amor
2004-02-25 12:23 ` David C. Hoos [this message]
2004-02-26 15:43   ` James Amor
2004-02-26  5:59 ` Simon Wright
2004-02-27 20:38   ` Guillaume Foliard
2004-02-28 11:27   ` Little Endian -> Big Endian (Ada95 / GNAT), Whats with floating point types? Joachim Schr�er
2004-02-29 16:32     ` Simon Wright
2004-03-04  5:32     ` pburnand0-news
2004-03-04 11:55       ` Little Endian -> Big Endian (Ada95 / GNAT),Whats " David C. Hoos
2004-03-04 13:12         ` Little Endian -> Big Endian (Ada95 / GNAT), Whats " Marius Amado Alves
2004-03-04 17:51           ` Warren W. Gay VE3WWG
2004-03-04 18:34             ` Hyman Rosen
2004-03-05 17:40               ` Warren W. Gay VE3WWG
2004-03-05 17:50                 ` Warren W. Gay VE3WWG
2004-03-05 13:48             ` pburnand0-news
2004-03-05 17:34               ` Warren W. Gay VE3WWG
2004-03-05 17:53                 ` Warren W. Gay VE3WWG
2004-03-05 13:29           ` pburnand0-news
replies disabled

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