2012年3月4日

函数参数压栈,栈帧ebp,esp怎样移动的?

摘要: 压栈一次esp-4,ebp不变esp是栈顶指针寄存器,堆栈操作只和esp有关比如有一个函数a,有两个参数,一般是这样的PUSH 1 参数2压栈,esp-4PUSH 2 参数1压栈,esp-4CALL a 调用a:PUSH EBP 保存ebpMOV EBP,ESP 改变栈帧,以后访问参数通过ebp,访问局部变量通过espSUB ESP,8 分配局部变量空间...ADD ESP,8POP EBP 恢复ebpRETN 8 返回,esp+8C语句对应汇编语句:例如函数:int aaa(int a,int b){int c;c=a+b;return c;}aaa(1,2);调试版aaa的代码PUSH E 阅读全文

posted @ 2012-03-04 20:54 原来... 阅读(11787) 评论(0) 推荐(0)

导航