Hi all I was trying to compile the following code with gcc 4.9.2 on Ubuntu 14.04 x86_64 platform:
/* File a.cpp */ #include <stdio.h> int main (int argc, const char *argv[]) { printf("Hello World!\n"); return 0; } Compilation commands are: g++-4.9.2 -std=c++11 -g -O0 -fno-builtin -m32 a.cpp I was trying to analyze the assembly generated by using command: objdump -d a.out I was befuddled by the following 3 assembly instructions (generated right in the beginning of 'main' function): lea 0x4(%esp), %ecx and 0xfffffff0, %esp pushl -0x4(%ecx) I am not able to understand the purpose of these 3 instructions. Can anyone explain me about them? I didn't observe these 3 instructions when I compiled the same code with '-m64' switch instead of '-m32'. Thanks - Abhishek