我的一片天

我的一片天
posts - 27, comments - 12, trackbacks - 0, articles - 16
   :: 首页 :: 新随笔 :: 联系 ::  :: 管理

堆栈ESP载调用函数时的变化。

Posted on 2007-12-08 21:23 xyz 阅读(340) 评论(0)  编辑 收藏 引用 所属分类: WIN32汇编

堆栈指针ESP的变化方法:先ESP=ESP-4,然后把要PUSH的值放入[ESP]里,就是说ESP是先变化到新的地址位置,然后在存入值,接着就停留在那里等待新的PUSH。

 

WIN32程序在调用函数时的压栈顺序如下:

ESP-4   |___EBP ___|   进入函数的ESP值,一般会执行PUSH EBP   MOV EBP,ESP,则EBP就是入函数的堆栈指针,以便通过EBP引用函数内的变量

ESP       |___EIP____|   调用函数后,自动压入下一条指令的EIP

 

以STDCALL方式的函数,参数由右到左分别压入,在处理完后必须恢复ESP的值到指向EIP的栈地址。一般函数可通过retun 4 这样的方式把ESP+4。

只有注册用户登录后才能发表评论。