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.)