文章详情

  • 游戏榜单
  • 软件榜单
关闭导航
热搜榜
热门下载
热门标签
php爱好者> php文档>函数调用

函数调用

时间:2010-08-03  来源:xulinyu

调用函数前,会把参数入栈操作,如下面函数 void func(arg1,arg2);   push arg2 push arg1   参数入栈的顺序和编译器还有函数调用约定有关,函数调用约定请查看相关资料。这里假设入栈顺序是从右到左,因为大部分入栈顺序都是从右到左的。   参数入栈之后,会调用函数 call func   这个操作会将eip入栈,用来保证函数结束后,cpu执行call func下一个指令。   然后会将ebp入栈 push ebp   之后将ebp赋值给esp move ebp,esp   这时ebp==esp   现在看下栈里面的内容,由于栈地址是从高到低的 所以ebp地址中保存的是以前的ebp,ebp+4保存的是eip,ebp+8保存的是arg1,ebp+12保存的是arg2   函数返回之前会将ebp恢复,esp是在函数返回之前恢复还是在函数返回之后恢复,就和调用约定有关了。 stdcall返回前是这样的ret 8,这样表示esp+8 cdecl返回前直接ret,这样esp是在函数返回后恢复esp+8。    
相关阅读 更多 +
排行榜 更多 +
辰域智控app

辰域智控app

系统工具 下载
网医联盟app

网医联盟app

运动健身 下载
汇丰汇选App

汇丰汇选App

金融理财 下载