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) |