Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1176191
  • 博文数量: 341
  • 博客积分: 12744
  • 博客等级: 上将
  • 技术积分: 4040
  • 用 户 组: 普通用户
  • 注册时间: 2008-05-12 09:34
文章分类
文章存档

2014年(1)

2013年(10)

2012年(17)

2011年(63)

2010年(102)

2009年(107)

2008年(41)

分类: C/C++

2011-07-18 07:53:02

1、push 参数
      可选,用来传递函数所使用的参数,可有多个,并且与c语言传参时顺序相反
2、call 函数名
      调用某个函数,这样就把原来的eip压栈了,使eip指向现在的函数位置
3、push %ebp
      将原来的堆栈底寄存器压栈
4、movl %esp, %ebp
      将原来的堆栈顶寄存器赋给%ebp
5、函数中的各种操作
6、movl %ebp, %esp
      函数调用结束,将堆栈顶寄存器恢复原值
7、popl %ebp
      恢复堆栈底寄存器恢复原值
8、ret
      恢复原来的eip寄存器,继续原函数的操作
9、清除子函数参数
     由于堆栈是向下伸展的,所以将esp加上4*参数数量就可以了
阅读(1032) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~