Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
| From | jacob navia <jacob@spamsink.net> |
|---|---|
| Newsgroups | comp.lang.c |
| Subject | Re: Alignment problems |
| Date | 2011-12-01 21:50 +0100 |
| Organization | lccwin |
| Message-ID | <jb8p9v$cmn$1@speranza.aioe.org> (permalink) |
| References | <jb6gbf$58a$1@speranza.aioe.org> <jb7sfh$221$1@speranza.aioe.org> <jb8ojo$ajt$1@speranza.aioe.org> |
Le 01/12/11 21:38, Alan Curry a écrit : > In article<jb7sfh$221$1@speranza.aioe.org>, > jacob navia<jacob@jspamsink.org> wrote: >> Thanks to everybody tht answered. I think I will go the way >> Gordon Burditt proposed. > > There's another answer that we forgot: > > Put the array at the beginning of the struct. Then if the struct is malloced, > the array inherits its "aligned for anything" property. > I can't do that since I do not know how big the array will be. The user calls me with iList.Create(sizeof(double)); to create a list of doubles. This is a variable length structure, allocated with malloc(sizeof(ListElement)+list->ElementSize); The data start immediately after the pointer. Now, there are two solutions to this: 1) Use a specific version of lists for integers, doubles, etc. 2) Align the data at run time to a miltiple of 8 or 16: We would have iList.CreateAligned(sizeof(double),8); This special version of Create would align to 8 or whatever bytes its data. Or I could modify the Create function to align data in a machine specific way in each machine. The problem is further complicated by the fact that under SPARC modern versions you do NOT need to align anything since the OS catches the unaligned trap, and loads the double with 2 instructions. Now the problem is that modern versions of gcc (and that machine has 4.2 installed) follow the recommendations of Oracle (ex Sun) and emit ldd instead of a sequence of two ld instructions expecting the OS to trap that. But since that machine has an OS from May 2002 (imagine that, almost ten years old) that apparently does NOT catch that unaligned instruction. Anyway, this is a general problem since the power PC has probably similar problems.
Back to comp.lang.c | Previous | Next — Previous in thread | Next in thread | Find similar | Unroll thread
Alignment problems jacob navia <jacob@spamsink.net> - 2011-12-01 01:05 +0100
Re: Alignment problems Ian Collins <ian-news@hotmail.com> - 2011-12-01 13:15 +1300
Re: Alignment problems pacman@kosh.dhis.org (Alan Curry) - 2011-12-01 02:57 +0000
Re: Alignment problems gordonb.hpln0@burditt.org (Gordon Burditt) - 2011-11-30 21:27 -0600
Re: Alignment problems jacob navia <jacob@spamsink.net> - 2011-12-01 13:38 +0100
Re: Alignment problems pacman@kosh.dhis.org (Alan Curry) - 2011-12-01 20:38 +0000
Re: Alignment problems jacob navia <jacob@spamsink.net> - 2011-12-01 21:50 +0100
Re: Alignment problems Ian Collins <ian-news@hotmail.com> - 2011-12-02 10:27 +1300
Re: Alignment problems Jorgen Grahn <grahn+nntp@snipabacken.se> - 2011-12-04 00:23 +0000
Re: Alignment problems Ian Collins <ian-news@hotmail.com> - 2011-12-04 13:31 +1300
Re: Alignment problems ImpalerCore <jadill33@gmail.com> - 2011-12-01 14:34 -0800
Re: Alignment problems "BartC" <bc@freeuk.com> - 2011-12-01 13:46 +0000
Re: Alignment problems Keith Thompson <kst-u@mib.org> - 2011-12-01 14:15 -0800
Re: Alignment problems David Thompson <dave.thompson2@verizon.net> - 2012-01-19 02:44 -0500
Re: Alignment problems "James" <no@spam.invalid> - 2011-12-01 19:43 -0800
Re: Alignment problems "Brain" <Brian@myhome.com> - 2011-12-04 02:47 -0600
Re: Alignment problems Keith Thompson <kst-u@mib.org> - 2011-12-04 08:26 -0800
Re: Alignment problems Phil Carmody <thefatphil_demunged@yahoo.co.uk> - 2011-12-08 00:12 +0200
Re: Alignment problems Keith Thompson <kst-u@mib.org> - 2011-12-07 22:31 -0800
Re: Alignment problems lovecreatesbeauty <lovecreatesbeauty@gmail.com> - 2011-12-08 21:43 -0800
Re: Alignment problems Keith Thompson <kst-u@mib.org> - 2011-12-09 01:31 -0800
Re: Alignment problems Phil Carmody <thefatphil_demunged@yahoo.co.uk> - 2011-12-09 14:15 +0200
csiph-web