1. 函数调用
注意函数调用和返回过程中的这些规则:
1. 函数参数压栈传递,并且是从右向左依次压栈。
2. ebp总是指向当前栈帧的栈底 ,而esp指向栈顶,在函数执行过程中esp随着压栈和出栈操作随时变化,而ebp是不动的,函数的参数和局部变量都是通过ebp的值加上一个偏移量来访问
2. Main函数、启动列程和退出状态
为什么汇编程序的入口是_start,而C程序的入口是main函数呢?
Gcc只是一个外壳而不是真正的编译器,真正的c编译器是:/uer/lib/gcc/i486-gun/4.3.2/ccl;同样,ld的连接器是/uer/lib/gcc/i486-gun/4.3.2/collect2。编译链接具体步骤如下:
(1)main.c被ccl编译成汇编程序/tmp/ccRGDpua.s
(2)这个汇编被as汇编成目标文件/tmp/ccidnZ1d.o
(