comp.lang.ada
 help / color / mirror / Atom feed
From: dewar@merv.cs.nyu.edu (Robert Dewar)
Subject: Re: Ada 95 Numerics questions for the experts
Date: 1997/08/27
Date: 1997-08-27T00:00:00+00:00	[thread overview]
Message-ID: <dewar.872721324@merv> (raw)
In-Reply-To: 01bcb2f2$b512f700$928871a5@dhoos


David said (with nasty lines > 80 chars :-)

  2.  The problem with your packed array example, however, is that what you
       are asking the compiler to do is to force array elements which are
smaller than
       one byte to straddle byte boundaries.  No compiler likes to do this,
as far as I
       know. (Record components straddling byte boundaries, are another
matter, and they
       are handled quite nicely without any ugly source code).
       Simply using pragma Pack instead of a "for 'size use 24" clause will
result in your
       8-element x 3-bit array occupying 32 bits, which is not bad at all.
       Undoubtedly, the extra code required to mask and shift the varying
amounts as
       a function of the array index would substantially exceed the one
byte of array
       size saved.  Besides, even if the compiler did give you your 24-bit
array, it would
       probably skip to the next 32-bit boundary for the next object in
memory, anyway.
       Even gnat will not give you a 24-bit array for this case (at least
the WinNT version 3.09).



GNAT most certainly allows elements to straddle storage boundaries, and
will tightly pack any component size up to 32 bits.

The following is quite acceptable to GNAT:

package j is
  type x is range 1 .. 5;
  for x'size use 3;
  type r is array (0 .. 7) of x;
  pragma Pack (r);
  for r'size use 24;
  type m is array (1 .. 10) of r;
  pragma pack (m);
  for m'size use 240;
end j;





  parent reply	other threads:[~1997-08-27  0:00 UTC|newest]

Thread overview: 25+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
     [not found] <3401C14B.480@gsfc.nasa.gov>
1997-08-25  0:00 ` Ada 95 Numerics questions for the experts Robert Dewar
     [not found] ` <dewar.872560585@merv>
     [not found]   ` <jcreem-2608970711210001@ljd155.sanders.lockheed.com>
     [not found]     ` <dewar.872630607@merv>
     [not found]       ` <jeffrey.m.creem-2708970802350001@ljd155.sanders.lockheed.com>
1997-08-27  0:00         ` Robert Dewar
     [not found]           ` <jeffrey.m.creem-2808970708260001@ljd155.sanders.lockheed.com>
1997-08-28  0:00             ` Robert Dewar
1997-08-27  0:00         ` David C. Hoos, Sr.
1997-08-27  0:00           ` Jeff Creem
1997-08-28  0:00             ` Robert Dewar
1997-08-28  0:00               ` Jeff Creem
1997-08-29  0:00               ` Tucker Taft
1997-08-30  0:00                 ` Robert A Duff
1997-08-31  0:00                 ` Tom Moran
1997-09-01  0:00                 ` Robert Dewar
1997-09-02  0:00                   ` Fergus Henderson
1997-09-02  0:00                   ` Robert A Duff
     [not found]                   ` <mheaney-ya023680000209972104030001@news.ni.net>
1997-09-05  0:00                     ` Robert Dewar
1997-09-05  0:00                       ` Matthew Heaney
1997-09-08  0:00                         ` Robert A Duff
1997-09-08  0:00                           ` Matthew Heaney
1997-09-09  0:00                             ` Robert A Duff
     [not found]                     ` <EFxt94.F5F@world.std.com>
1997-09-06  0:00                       ` Robert Dewar
1997-09-08  0:00                         ` Robert A Duff
1997-09-08  0:00                           ` Matthew Heaney
1997-09-09  0:00                             ` Robert A Duff
1997-09-01  0:00                 ` Robert Dewar
1997-08-27  0:00           ` Robert Dewar [this message]
1997-08-30  0:00         ` Robert A Duff
replies disabled

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