comp.lang.ada
 help / color / mirror / Atom feed
From: lutz@iks-jena.de (Lutz Donnerhacke)
Subject: Re: Size and pack
Date: Wed, 10 Oct 2001 09:27:08 +0000 (UTC)
Date: 2001-10-10T09:27:08+00:00	[thread overview]
Message-ID: <slrn9s853b.k4.lutz@taranis.iks-jena.de> (raw)
In-Reply-To: 9ff447f2.0110100005.2503bb00@posting.google.com

* 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.



  parent reply	other threads:[~2001-10-10  9:27 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 [this message]
2001-10-11  6:24   ` Adrian Hoe
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