comp.lang.ada
 help / color / mirror / Atom feed
From: byhoe@greenlime.com (Adrian Hoe)
Subject: Re: Size and pack
Date: 10 Oct 2001 23:24:27 -0700
Date: 2001-10-11T06:24:27+00:00	[thread overview]
Message-ID: <9ff447f2.0110102224.5c470e2c@posting.google.com> (raw)
In-Reply-To: slrn9s853b.k4.lutz@taranis.iks-jena.de

lutz@iks-jena.de (Lutz Donnerhacke) wrote in message news:<slrn9s853b.k4.lutz@taranis.iks-jena.de>...
> * Adrian Hoe wrote:
> >I have the following declaration:
> >   type Rx_Header_Data is
> >      record
> >         Start_Byte   : Character := Latin_1.STX;
> >         Splitter     : Character;
> >         Command_Byte : Character;
> >         Pad_Byte_1   : Character;
> >         Pad_Byte_2   : Character;
> 
> Five Bytes so far.
> 
> >         Log_Num      : Interfaces.C.Long;
> >         End_Byte     : Character := Latin_1.ETX;
> >         LRC          : Character;
> >      end record;
> >
> >It supposed to be 11 bytes long but Rx_Header_Data'Size reports 14
> >bytes. 'Size will report 11 bytes when I add the following line:
> >
> >pragma pack (Rx_Header_Data);
> >
> >I have found that Log_Num : Interfaces.C.Long takes up 7 bytes without
> >pragma pack.
> 
> As expected.
> 
> >Why this happens?
> 
> Log_Num is aligned to use a single 64bit RAM access instead of bursting two
> 32bit accesses. Pragma Pack favors size over speed.
> 
> >Can I use representation clause instead of pragma pack?
> 
> Yes.
> 
> >If both methods work, which is the best approach and why?
> 
> Depends on your needs:
>   - If you only need the small size, let the compiler choose the
>     representation. (-gnatR shows the compilers decision)
>       for rx_header_data_packed use record       
>          start_byte   at  0 range  0 ..  7;
>          splitter     at  1 range  0 ..  7;
>          command_byte at  2 range  0 ..  7;
>          pad_byte_1   at  3 range  0 ..  7;
>          log_num      at  4 range  0 .. 31;  -- Changed
>          pad_byte_2   at  8 range  0 ..  7;  -- Changed
>          end_byte     at  9 range  0 ..  7;
>          lrc          at 10 range  0 ..  7;
>       end record;
>   - If you need a special layout (i.e. for interfacing),
>     use record representation clauses.



The record structure will be used to interface with COTS product which
sends out data in specific byte orders. The shuffle is not viable in
this case.

This will be intended on 32-bit Intel. What will be the effect if I
use representation clauses on 64-bit processor?

Adrian



  reply	other threads:[~2001-10-11  6:24 UTC|newest]

Thread overview: 51+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2001-10-10  8:05 Size and pack Adrian Hoe
2001-10-10  8:59 ` Alfred Hilscher
2001-10-10  9:50   ` John McCabe
2001-10-11  6:36     ` Adrian Hoe
2001-10-11  8:55       ` John McCabe
2001-10-31  1:53         ` Robert Dewar
2001-10-31  1:50     ` Robert Dewar
2001-10-31  9:17       ` John McCabe
2001-10-31 11:58       ` Jeff Creem
2001-11-01  1:58         ` Adrian Hoe
2001-11-01  2:34           ` Jeff Creem
2001-11-01 14:58             ` Marin David Condic
2001-11-01  3:53           ` Matthew Heaney
2001-11-01 18:37             ` Jeff Creem
2001-11-02  3:39               ` Robert Dewar
2001-11-01  3:45         ` Jeffrey Carter
2001-11-01  6:00         ` Robert Dewar
2001-10-10  9:24 ` Pi
2001-10-10  9:27 ` Lutz Donnerhacke
2001-10-11  6:24   ` Adrian Hoe [this message]
2001-10-11  8:58     ` John McCabe
2001-10-11 13:20       ` Mark Johnson
2001-10-11 16:23         ` John McCabe
2001-10-11 16:00           ` Pat Rogers
2001-10-12  8:37             ` John McCabe
2001-10-28  1:30         ` Robert Dewar
2001-10-11  9:30     ` Lutz Donnerhacke
2001-10-11 10:12 ` Vincent Smeets
2001-10-11 10:19   ` Lutz Donnerhacke
2001-10-11 11:18     ` David C. Hoos, Sr.
2001-10-11 12:06       ` Lutz Donnerhacke
2001-10-11 13:49 ` Ted Dennison
2001-10-26  4:00 ` Smark
2001-10-26  6:14   ` tmoran
2001-10-26 17:51     ` Smark
2001-10-26 23:21       ` Jeffrey Carter
2001-10-26 23:39       ` tmoran
2001-10-29  1:01         ` Adrian Hoe
2001-10-29  2:21           ` tmoran
2001-10-29 10:42             ` Adrian Hoe
2001-10-29 23:15               ` tmoran
2001-10-29  9:52         ` Lutz Donnerhacke
2001-10-29 10:29           ` Larry Kilgallen
2001-10-29 10:50             ` Lutz Donnerhacke
2001-10-29 11:12               ` Larry Kilgallen
2001-10-31  2:02                 ` Robert Dewar
2001-10-31  2:00               ` Robert Dewar
2001-10-31  2:51                 ` Larry Kilgallen
2001-10-31  1:59           ` Robert Dewar
2001-10-31  1:57       ` Robert Dewar
2001-10-31  1:55   ` Robert Dewar
replies disabled

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