Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
| From | Kaz Kylheku <kaz@kylheku.com> |
|---|---|
| Newsgroups | comp.lang.c |
| Subject | Re: Padding involved |
| Date | 2014-03-28 19:54 +0000 |
| Organization | Aioe.org NNTP Server |
| Message-ID | <20140328124409.987@kylheku.com> (permalink) |
| References | (5 earlier) <lnr46dv8ol.fsf@nuthaus.mib.org> <6c398cac-bf10-4213-b147-4a01ac23568f@googlegroups.com> <20140307165348.597@kylheku.com> <ejiaj9l37s39s39mnrf9rrrshaqr5mbb0k@4ax.com> <lh4g05$uu7$1@speranza.aioe.org> |
On 2014-03-28, glen herrmannsfeldt <gah@ugcs.caltech.edu> wrote:
> David Thompson <dave.thompson2@verizon.net> wrote:
>
> (snip)
>
>> No, the reverse. The offset must divide the size, or the size must be
>> divisible by the offset. E.g. struct { long a; float b; } if both long
>> and float are 4 bytes (as is common, though not universal and not
>> required by the Standard) then the struct has size at least 8 but is
>> unlikely to have alignment more than 4.
>
> (snip)
>
>> Note that alignment can be less than size, most commonly on systems
>> that can align everything to 1, but I've used a system where int is 4
>> bytes and aligned to 2. Alignment cannot be more than size.
>
> As I understand it, for some systems an alignment greater than
> size is necessary for optimal use.
C does not support this. C compilers can support extra alignment for efficient
access in the way local variables are laid out and perhaps struct members.
No such thing will be supported for arrays and pointers.
If a greater alignment than size is required for correctness, then misaligned
access for pointers and arrays must be implemented.
E.g. if a short is two bytes, but must be aligned on a four-byte boundary, then
code generates for array indexing and pointer dereferncing has to somehow
handle the accesses at odd indices. Perhaps by rounding down to an address
divisible by four, loading a four byte word, and then shifting down
the half-word.
The guys who designed C were no strangers to machines that didn't provide
access to certain small types such as characters.
In fact, the B language, predecessor to C, handled strings similarly to C:
characters were packed into arrays of cells, which had to be unpacked and
re-packed by routines.
http://cm.bell-labs.com/who/dmr/chist.html
"[B's] character-handling mechanisms, inherited with few changes from BCPL,
were clumsy: using library procedures to spread packed strings into
individual cells and then repack, or to access and replace individual
characters, began to feel awkward, even silly, on a byte-oriented machine. "
So at that point Ritchie went for an addressable character type.
That can basically be seen as the point of departure at which the design
of C shifted toward "every type, down to the character/byte, is accessible at
an address that is no more strictly aligned than a multiple of its size".
Back to comp.lang.c | Previous | Next — Previous in thread | Next in thread | Find similar | Unroll thread
Padding involved anish singh <anish198519851985@gmail.com> - 2014-03-07 13:13 -0800
Re: Padding involved jacob navia <jacob@spamsink.net> - 2014-03-07 22:17 +0100
Re: Padding involved Eric Sosman <esosman@comcast-dot-net.invalid> - 2014-03-07 16:26 -0500
Re: Padding involved anish singh <anish198519851985@gmail.com> - 2014-03-07 13:49 -0800
Re: Padding involved Eric Sosman <esosman@comcast-dot-net.invalid> - 2014-03-07 18:11 -0500
Re: Padding involved anish kumar <yesanishhere@gmail.com> - 2014-03-07 15:19 -0800
Re: Padding involved Joe Pfeiffer <pfeiffer@cs.nmsu.edu> - 2014-03-07 16:26 -0700
Re: Padding involved anish kumar <yesanishhere@gmail.com> - 2014-03-07 15:41 -0800
Re: Padding involved James Kuyper <jameskuyper@verizon.net> - 2014-03-07 18:50 -0500
Re: Padding involved glen herrmannsfeldt <gah@ugcs.caltech.edu> - 2014-03-08 00:10 +0000
Re: Padding involved Joe Pfeiffer <pfeiffer@cs.nmsu.edu> - 2014-03-08 09:27 -0700
Re: Padding involved Keith Thompson <kst-u@mib.org> - 2014-03-07 16:24 -0800
Re: Padding involved anish kumar <yesanishhere@gmail.com> - 2014-03-07 16:45 -0800
Re: Padding involved Kaz Kylheku <kaz@kylheku.com> - 2014-03-08 01:03 +0000
Re: Padding involved David Thompson <dave.thompson2@verizon.net> - 2014-03-28 06:11 -0400
Re: Padding involved glen herrmannsfeldt <gah@ugcs.caltech.edu> - 2014-03-28 18:45 +0000
Re: Padding involved James Kuyper <jameskuyper@verizon.net> - 2014-03-28 15:23 -0400
Re: Padding involved Keith Thompson <kst-u@mib.org> - 2014-03-28 12:40 -0700
Re: Padding involved glen herrmannsfeldt <gah@ugcs.caltech.edu> - 2014-03-28 21:19 +0000
Re: Padding involved Stephen Sprunk <stephen@sprunk.org> - 2014-03-28 17:07 -0500
Re: Padding involved Eric Sosman <esosman@comcast-dot-net.invalid> - 2014-03-28 18:25 -0400
Re: Padding involved Stephen Sprunk <stephen@sprunk.org> - 2014-03-28 21:15 -0500
Re: Padding involved Keith Thompson <kst-u@mib.org> - 2014-03-29 01:03 -0700
Re: Padding involved Tim Rentsch <txr@alumni.caltech.edu> - 2014-03-29 14:23 -0700
Re: Padding involved glen herrmannsfeldt <gah@ugcs.caltech.edu> - 2014-03-30 01:43 +0000
Re: Padding involved James Kuyper <jameskuyper@verizon.net> - 2014-03-28 21:32 -0400
Re: Padding involved Richard Damon <Richard@Damon-Family.org> - 2014-03-28 21:59 -0400
Re: Padding involved Stephen Sprunk <stephen@sprunk.org> - 2014-03-29 00:46 -0500
Re: Padding involved James Kuyper <jameskuyper@verizon.net> - 2014-03-29 08:51 -0400
Re: Padding involved Eric Sosman <esosman@comcast-dot-net.invalid> - 2014-03-29 08:57 -0400
Re: Padding involved Stephen Sprunk <stephen@sprunk.org> - 2014-03-30 18:53 -0500
Re: Padding involved Eric Sosman <esosman@comcast-dot-net.invalid> - 2014-03-30 20:25 -0400
Re: Padding involved Stephen Sprunk <stephen@sprunk.org> - 2014-03-31 11:34 -0500
Re: Padding involved Keith Thompson <kst-u@mib.org> - 2014-03-31 11:27 -0700
Re: Padding involved Keith Thompson <kst-u@mib.org> - 2014-03-31 11:36 -0700
Re: Padding involved Kaz Kylheku <kaz@kylheku.com> - 2014-03-31 19:14 +0000
Re: Padding involved Stephen Sprunk <stephen@sprunk.org> - 2014-03-31 15:43 -0500
Re: Padding involved Phil Carmody <thefatphil_demunged@yahoo.co.uk> - 2014-04-01 03:12 +0300
Re: Padding involved Stephen Sprunk <stephen@sprunk.org> - 2014-04-03 00:45 -0500
Re: Padding involved Stephen Sprunk <stephen@sprunk.org> - 2014-03-29 13:02 -0500
Re: Padding involved Eric Sosman <esosman@comcast-dot-net.invalid> - 2014-03-29 14:44 -0400
Re: Padding involved glen herrmannsfeldt <gah@ugcs.caltech.edu> - 2014-03-29 19:49 +0000
Re: Padding involved James Kuyper <jameskuyper@verizon.net> - 2014-03-30 19:12 -0400
Re: Padding involved Stephen Sprunk <stephen@sprunk.org> - 2014-03-31 16:20 -0500
Re: Padding involved James Kuyper <jameskuyper@verizon.net> - 2014-03-31 17:53 -0400
Re: Padding involved Phil Carmody <thefatphil_demunged@yahoo.co.uk> - 2014-04-01 03:22 +0300
Re: Padding involved Stephen Sprunk <stephen@sprunk.org> - 2014-04-04 14:36 -0500
Re: Padding involved James Kuyper <jameskuyper@verizon.net> - 2014-04-04 17:33 -0400
Re: Padding involved Tim Rentsch <txr@alumni.caltech.edu> - 2014-04-14 13:46 -0700
Re: Padding involved glen herrmannsfeldt <gah@ugcs.caltech.edu> - 2014-04-14 22:00 +0000
Re: Padding involved Keith Thompson <kst-u@mib.org> - 2014-04-14 15:37 -0700
Re: Padding involved Tim Rentsch <txr@alumni.caltech.edu> - 2014-04-17 09:11 -0700
Re: Padding involved Tim Rentsch <txr@alumni.caltech.edu> - 2014-04-14 13:25 -0700
Re: Padding involved Keith Thompson <kst-u@mib.org> - 2014-03-29 00:57 -0700
Re: Padding involved James Kuyper <jameskuyper@verizon.net> - 2014-03-29 08:57 -0400
Re: Padding involved Keith Thompson <kst-u@mib.org> - 2014-03-29 14:18 -0700
Re: Padding involved Tim Rentsch <txr@alumni.caltech.edu> - 2014-03-30 12:02 -0700
Re: Padding involved Keith Thompson <kst-u@mib.org> - 2014-03-30 19:35 -0700
Re: Padding involved Tim Rentsch <txr@alumni.caltech.edu> - 2014-04-14 12:54 -0700
Re: Padding involved Tim Rentsch <txr@alumni.caltech.edu> - 2014-03-29 14:44 -0700
Re: Padding involved glen herrmannsfeldt <gah@ugcs.caltech.edu> - 2014-03-29 03:50 +0000
Re: Padding involved James Kuyper <jameskuyper@verizon.net> - 2014-03-29 09:02 -0400
Re: Padding involved Stephen Sprunk <stephen@sprunk.org> - 2014-03-29 13:19 -0500
Re: Padding involved James Kuyper <jameskuyper@verizon.net> - 2014-03-28 21:21 -0400
Re: Padding involved Eric Sosman <esosman@comcast-dot-net.invalid> - 2014-03-28 15:27 -0400
Re: Padding involved Kaz Kylheku <kaz@kylheku.com> - 2014-03-28 19:54 +0000
Re: Padding involved Stephen Sprunk <stephen@sprunk.org> - 2014-03-28 15:02 -0500
Re: Padding involved Kaz Kylheku <kaz@kylheku.com> - 2014-03-08 00:43 +0000
Re: Padding involved Eric Sosman <esosman@comcast-dot-net.invalid> - 2014-03-07 20:20 -0500
Re: Padding involved anish singh <anish198519851985@gmail.com> - 2014-03-07 13:49 -0800
Re: Padding involved James Kuyper <jameskuyper@verizon.net> - 2014-03-07 16:46 -0500
Re: Padding involved "BartC" <bc@freeuk.com> - 2014-03-07 21:59 +0000
Re: Padding involved anish kumar <yesanishhere@gmail.com> - 2014-03-07 14:34 -0800
Re: Padding involved "BartC" <bc@freeuk.com> - 2014-03-07 23:59 +0000
Re: Padding involved Keith Thompson <kst-u@mib.org> - 2014-03-07 15:15 -0800
Re: Padding involved "BartC" <bc@freeuk.com> - 2014-03-08 10:08 +0000
Re: Padding involved Ben Bacarisse <ben.usenet@bsb.me.uk> - 2014-03-08 12:39 +0000
Re: Padding involved Keith Thompson <kst-u@mib.org> - 2014-03-08 14:03 -0800
Re: Padding involved Malcolm McLean <malcolm.mclean5@btinternet.com> - 2014-03-08 09:01 -0800
csiph-web