On 02/02/2015 01:15 AM, Mr.reCoder wrote:
Dear gcc developer,I have a code like this: #include <stdio.h> void foo(int x) { int y; x++; y = 4; } int main(void) { foo(2); return 0; } and compiled with "gcc -o outexec srcfile.c" command. when disassemble the file we see that sending argument to function "foo" is done by -------------------------------------- sub esp, 4 mov dword ptr [esp], 2 call foo -------------------------------------- instructions. why gcc doesn't use the "push" command like:
You can find a discussion on the same subject here: http://stackoverflow.com/questions/4534791/why-does-it-use-the-movl-instead-of-push A recent GCC does as you suggest, so the version you're using might be either too old or buggy. I see -mpush-args documented as enabled by default as far back as 3.0. Martin
