gcc -S -o main.c -m32
得到汇编程序
把得到的汇编程序中的以点号开头的都是用于链接时候的辅助信息去掉
得到下面干净的汇编程序
(1)esp:栈指针寄存器(extended stack pointer),其内存放着一个指针,该指针永远指向系统栈最上面一个栈帧的栈顶。
(2)ebp:基址指针寄存器(extended base pointer),其内存放着一个指针,该指针永远指向系统栈最上面一个栈帧的底部,是一个相对的栈底。
其实每个函数 都是一个局部性的栈,下图为函数在内存中的分析
一个函数的开始头两条汇编指令都是一样的。都是先压栈,esp自动增加,将esp拷贝到ebp