章强 + 原创作品转载请注明出处 + 《Linux内核分析》MOOC课程http://mooc.study.163.com/course/USTC-1000029000
实验截图
首先写一个简单的c程序main.c
利用指令
gcc –S –o main.s main.c -m32
实现在64位环境下生成32位汇编文件
打开main.s,删除多余的汇编代码
实验分析
汇编代码执行中内存中的操作如下图:
ebp指向栈底,esp指向栈顶,eip指向下一条要执行的指令,eax返回函数的返回值给上一级。
总结
程序编译分为四步:预处理-编译-汇编-链接,计算机将高级语言编译成汇编语言,将指令和数据存储在内存上,再通过cpu对指令进行调用执行。通过本次课程了解了一些x86汇编指令以及各种寄存器和指令的寻址方式,函数调用堆栈是由逻辑上多个堆栈叠加而成的。