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

Re: [MiNT] [Emutos-devel] Emutos and gcc-4.2.2

Thomas Huth wrote:

On Nov 24, 2007 12:34 AM, Vincent Rivière
<vriviere@users.sourceforge.net> wrote:
I would like to speak about another "feature" : alignment.

By default, GCC aligns structure members on 4-byte boundaries, producing
useless 2-byte holes in a structure where longs and shorts are mixed. I
patched it long ago to use a 2-byte default alignment, so no space is
wasted. Some people said that the 68020+ CPU have faster memory access
to longs aligned on 32-bit boundaries. Is it true on Atari computers ?

Yes, on Atari TT and Falcon030. It's true for any system with 68020+, which all have 32 bit data buses.

I've heard that, too, but I am not an expert here ... that's maybe a
better question to the MiNT developers since they are more likely
working on 68030 machines than the folks here on the EmuTOS mailing

I recently discovered another "feature" of GCC. When function arguments
are pushed on the stack, they are aligned on an "int" boundary. When
compiling with -mshort, there is no additional filler. But when -mshort
is not used, pushing a short then a long causes the long to be aligned 2
bytes further. A short filler is inserted between the 2 values. Just
like structure alignment, it seems to me that such alignment is useless
on the Atari platform. I plan to remove this alignment in my next build.

Bad idea.

Well, I think the default size of items that are pushed on the stack
should be sizeof(int).
For example when you have declared following function in one file:

int myfunc(int a, int b)
    return a + b;

And in another file you call myfunc(3, 5), but there is no prototype
for myfunc before...
... this is perfectly valid C (despite it's ugly due to the missing
prototype), but it will fail as soon as you disable this "filler"
values on the stack. I think it's better not to disable these


  -- Howard Chu
  Chief Architect, Symas Corp.  http://www.symas.com
  Director, Highland Sun        http://highlandsun.com/hyc/
  Chief Architect, OpenLDAP     http://www.openldap.org/project/