comp.lang.ada
 help / color / mirror / Atom feed
From: Dale Stanbrough <MrNoSpam@bigpoop.net.au>
Subject: Re: Porting ADA source
Date: Mon, 19 Jul 2004 11:04:08 GMT
Date: 2004-07-19T11:04:08+00:00	[thread overview]
Message-ID: <MrNoSpam-81A277.21040819072004@news-server.bigpond.net.au> (raw)
In-Reply-To: cdfu3s$k1a$1@e3k.asi.ansaldo.it

Giacomo Polizzi wrote:

> Hello,
> 
> I have to port an ADA program from an Unix DEC Alpha machine with a DEC ADA
> compiler to a Linux pc machine with gnat (gcc) compiler.
> 
> The task is to have, if possible, an unique source code compilable on both
> platforms but there are the following problems:

One solution is to just have a package spec with different bodies
for each host. You could inline the code so it wouldn't be any slower.
You would have to use your configuration tools to help you choose one
or the other.

 
> 1) some system packages that execute the same kind of operations have
> different names in the two compilers



> 2) some system functions (for example mathematical function) have different
> names in the two compilers
> 
> 3) the word length is 64 bits on DEC Alpha and 32 bits on pc so it is not
> always possible to use the same standard type (for example the long type is
> 64 bits on Alpha and 32 bits on pc)

If you use type long_integer, then you could replace any types with new
type defined by the range needed.

e.g.

   type my_long_integer is range -2**(63)..2**63-1;

Try...

   with ada.text_Io; use ada.text_Io;

   procedure demo is
      type my_long_integer is range -2**(63)..2**63-1;

   begin
      Put_line (integer'image (my_long_integer'size));
   end;


i ran this and got "64" on a 32 bit PPC based mac, so it seems to work.


> 4) the standard type (long long) used by gcc on pc to solve the previous
> problem is not supported by the DEC ADA compiler

see above...


> 5) the different word length modifies some structure length used to define
> interface messages with other external programs

If you need to talk to other programs then you should be defining the 
size|(range of values) for the fields in the structures without using
"long" (or Long_Integer).

Define your own types (with size clauses if needed) and then use those
in your program.


> Is there something like #IFDEF of C language that I can use in ADA ?

Not in Ada. Implementations may support a feature like this, but it's 
not part of the language (e.g. gnat does). Very often you can get around
it and have a better structure for your code.


> Is there any other kind of solution for the above problems ?
> 
> Thanks to everybody
> 
> Giacomo

dale

-- 
dstanbro@spam.o.matic.bigpond.net.au



  reply	other threads:[~2004-07-19 11:04 UTC|newest]

Thread overview: 37+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2004-07-19  7:42 Porting ADA source Giacomo Polizzi
2004-07-19 11:04 ` Dale Stanbrough [this message]
2004-07-19 12:14   ` Marin David Condic
2004-07-19 18:46     ` tmoran
2004-07-20  0:44       ` Marin David Condic
2004-07-20 11:18       ` Peter C. Chapin
2004-07-20 11:41         ` Martin Dowie
2004-07-20 11:59           ` Marin David Condic
2004-07-20 13:02             ` Georg Bauhaus
2004-07-20 18:49             ` Jeffrey Carter
2004-07-20 22:51             ` Randy Brukardt
2004-07-21  0:35               ` Robert I. Eachus
2004-07-21 12:24                 ` Marin David Condic
2004-07-22 22:48                   ` Robert I. Eachus
2004-07-23 13:00                     ` Marin David Condic
2004-07-24  3:04                       ` Robert I. Eachus
2004-07-24 11:48                         ` Marin David Condic
2004-07-24 12:42                           ` Robert I. Eachus
2004-07-26 18:39                             ` Marin David Condic
2004-08-17  4:28               ` Ronald Price
2004-08-17 11:28                 ` Frank J. Lhota
2004-07-19 11:09 ` Adrian Knoth
2004-07-19 12:23 ` Porting Ada source Jacob Sparre Andersen
2004-07-19 18:05   ` Jean-Pierre Rosen
2004-07-19 13:39 ` Porting ADA source Steve
2004-07-20  0:54   ` Marin David Condic
2004-07-19 18:05 ` Martin Dowie
2004-07-19 19:33   ` Wes Groleau
2004-07-19 20:03     ` Larry Kilgallen
2004-07-19 20:29       ` Wes Groleau
2004-07-20 16:13         ` Martin Krischik
2004-07-19 21:36     ` Martin Dowie
2004-07-20 12:14       ` Frank J. Lhota
2004-07-20 12:27         ` Vinzent 'Gadget' Hoefler
2004-07-20 13:13 ` Peter Amey
2004-07-21  6:20 ` Volkert
2004-07-31 16:04 ` Richard  Riehle
replies disabled

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