Re: some questions about gcc4

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

 



Alex wrote:
I have only 1 int variable. My system is 32Bit. But why for 1 int
variable compiler make sub esp,0x10 ?
1 int variable located in 4 bytes. What in another 12 ?

gcc man page says:
      -mpreferred-stack-boundary=num
          Attempt to keep the stack boundary aligned to a 2 raised to num
          byte boundary.  If -mpreferred-stack-boundary is not specified, the
          default is 4 (16 bytes or 128 bits).

so do a gcc -mpreferred-stack-boundary=2 and you're done.

I think they set to 4 by default for performances' reasons, when you use SSE
data that likes to be aligned to 16 bytes. (Or maybe because the AMD64
ABI says the stack is 16 bytes aligned...) But let a gcc programmer answer
that if one has time to. :-) (And by the way I'm not sure of what I write,
so don't take it for the truth.)

[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