Re: Bloated Struct Problem

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Sun, Jun 14, 2009 at 02:43:17PM -0700, Tim Prince wrote:
> Michael Meissner wrote:
> 
> > 
> > 32-bit GCC on x86 defines the alignment of long long to 4 bytes, while 64-bit
> > GCC on x86 defines the alignment to be 8 bytes.  Unfortunately the 32 bit x86
> > is also stuck with doubles being aligned on a 32-bit boundary, due to the fact
> > that the people creating the original ABI were using a 386 which did not need
> > higher alignments, and newer processors lose performance because it isn't
> > properly aligned.
> In x86 32-bit mode, long long continues to be implemented with pairs of
> int, so the performance problems with 4-byte alignment arise only for
> double and vectorizable types.

Well, there is the FILD instruction that converts from a 64-bit integer and
pushes the value on the 387 stack, and FIST which pops off the stack and
converts it to 64-bit integer.

But I would argue it was a mistake for doubles not being aligned in the ABI
(and I would think long longs also should have the same alignment, even if
technically the hardware doesn't require it).

-- 
Michael Meissner, IBM
4 Technology Place Drive, MS 2203A, Westford, MA, 01886, USA
meissner@xxxxxxxxxxxxxxxxxx

[Index of Archives]     [Linux C Programming]     [Linux Kernel]     [eCos]     [Fedora Development]     [Fedora Announce]     [Autoconf]     [The DWARVES Debugging Tools]     [Yosemite Campsites]     [Yosemite News]     [Linux GCC]

  Powered by Linux