C语言代码转汇编语言(VS2010)
1.ebp入栈,ebp常常用来保存函数调用前的esp值,所以事先要保存ebp的值,使函数调用前后ebp值保持不变。
2.保存函数调用前的esp值到ebp。
3.在栈中开辟一定空间存储函数要用到的局部变量,该区域称为局部变量区域,通过esp来达到目的。
4.ebx、esi、edi入栈。
5.初始化局部变量区域。
6.执行函数指令。函数第一个入口参数在ebp+8,第二个入口参数在ebp+12,第三个入口参数在ebp+16,以此类推。其中ebp+4中保存函数返回地址。函数内第一个局部变量在ebp-8,第二个局部变量在ebp-20,第三个局部变量在ebp-32,以此类推。若有返回值,则将返回值存入eax中。
7.edi、esi、ebx出栈。
8.恢复esp(mov esp, ebp)。
9.ebp出栈。