I wrote a function in file example1.c as below:
void function(int a)
{
char buffer1[1];
}
When used "gcc -S -o example1.s example1.c, I got the following assembly code:
_function:
pushl %ebp
movl %esp, %ebp
subl $4, %esp
leave
ret
And if I change buffer1[1] to buffer1[2] or buffer1[4], the assembly code is the same. However, when I wrote buffer1[3] instead of buffer1[1], I got the following assembly code:
_function:
pushl %ebp
movl %esp, %ebp
subl $24, %esp
leave
ret
I don't know why. Who can tell me the reason? Thank you.
My PC:
CPU:AMD Turion 64 X2
Memory: DDR2 667
OS:Windows XP Home SP3