> This is to make room for the parameters to printf(); there are two, and > each is a pointer, and hence four bytes, so the total space required is > eight bytes. I think you are not very correct in this part, if you write simple function which calls function without parameter, you'll see that gcc is also substract by 8 (12 if you use -fomit-frame-pointer). Command pushl substracts ESP pointer by 4 itself. So i think gcc is trying to align variable (and return address) in stack. Arturas Moskvinas