comp.lang.ada
 help / color / mirror / Atom feed
From: "Samuel T. Harris" <s_harris@hso.link.com>
Subject: Re: HELP ! need to insert value in array !!
Date: 1997/06/30
Date: 1997-06-30T00:00:00+00:00	[thread overview]
Message-ID: <33B7EB21.446B@hso.link.com> (raw)
In-Reply-To: dewar.867554609@merv


I believe what is confusing here is that padding
can be inserted for two reasons. One is because of
the natural alignment of the data due to the
particulars of the target machine. The other is due
to some additional particular requirements when making
arrays.

Earlier,

Mike Rubenstein wrote:

> Perhaps it was someone who actually knows C.  Whoever said it was
> correct.  Objects may be padded in that there may be bytes that are
> not used, but there must be no additional padding between array
> elements.  For any type T,
> 
>         T a;
>         T b[5];
> 
> we must have sizeof b == 5 * sizeof a. There can be no unused space
> between b[0] and b[1].
> 
> Michael M Rubenstein

The compiler is allowed to "pad" the elements of the array,
if and only if it "pads" scalar instances of the component
type. Additional padding within the array is not permitted.
This means, in a platform using 32-bit words, a struct taking
11 bits can be placed with 32-bit alignment. This includes
21 bits of "padding". An array of the same struct will
place each 11-bit component in adjacent 32-bit words.
Again, we have 21 bits of "padding" between the "contiguious"
components of the array. This "padding" is natural to the
component since it is natural to the scalar and is not
considered "unused".

Mark sited a standards reference ...

> I am talking about things that are guaranteed in the standard.
> Obviously, they are not things that "everyone knows must be so".
> 
> I already quoted the relevant passage -- the elements of an array are
> contiguous (ISO 6.1.2.5).

his natural "padding" in my example must be 
preserved when creating arrays to satisfy the requirements
and this "padding" does not violate the contiguous nature
of the components in the array.

Robert Dewar also states ...

> i am not quite sure who said
> 
> <<: An impelemenattion is not permitted to pad between array
> elements.??

> But it is definitely wrong, of course an implementatoin is permitted
> padding between array elements.

... in which I believe he is refering to this natural padding.
(Please correct me, Robert, if I've misread you.)
I expect the same default behavior in Ada (except for Booleans).
I want my Ada arrays to lay out similarly to my scalars as
far as alignment is concerned. I don't want my Ada adding
any additional padding.

I use pragma pack when I want Ada to collapse the "natural"
or alignment padding and I expect to pay some performance
penalty when I do so.

-- 
Samuel T. Harris, Senior Engineer
Hughes Training, Inc. - Houston Operations
2224 Bay Area Blvd. Houston, TX 77058-2099
"If you can make it, We can fake it!"




      parent reply	other threads:[~1997-06-30  0:00 UTC|newest]

Thread overview: 29+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
     [not found] <33A9C27C.22F7@post4.tele.dk>
     [not found] ` <5oci49$97g@crl.crl.com>
     [not found]   ` <866920621snz@genesis.demon.co.uk>
1997-06-27  0:00     ` HELP ! need to insert value in array !! Ralph Silverman
1997-06-28  0:00       ` Lawrence Kirby
     [not found]       ` <dewar.867554609@merv>
1997-06-29  0:00         ` Mike Rubenstein
1997-06-29  0:00           ` Robert Dewar
1997-06-29  0:00             ` Mike Rubenstein
1997-06-29  0:00               ` Robert Dewar
1997-06-29  0:00                 ` Mike Rubenstein
1997-06-30  0:00                 ` Ed Hook
1997-07-04  0:00                 ` Richard A. O'Keefe
1997-07-07  0:00                   ` Clive D.W. Feather
1997-07-01  0:00               ` Al Bowers
1997-07-01  0:00             ` Richard Kenner
1997-07-01  0:00               ` Robert Dewar
1997-07-02  0:00             ` Christian Froeschlin
1997-07-02  0:00               ` Robert Dewar
1997-07-04  0:00             ` Richard A. O'Keefe
1997-07-04  0:00               ` Robert Dewar
1997-07-04  0:00                 ` Mike Rubenstein
1997-07-05  0:00                   ` Robert Dewar
1997-07-05  0:00                     ` Mike Rubenstein
1997-07-05  0:00                       ` Mike Rubenstein
1997-07-05  0:00                     ` Larry Kilgallen
1997-07-10  0:00                     ` Alan Bowler
1997-07-07  0:00                 ` Shmuel (Seymour J.) Metz
1997-07-07  0:00                 ` Mark H. Wood
1997-07-09  0:00                   ` Robert Dewar
1997-07-10  0:00                     ` Lawrence Kirby
1997-07-08  0:00                 ` Richard Kenner
1997-06-30  0:00         ` Samuel T. Harris [this message]
replies disabled

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