首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 移动开发 > 移动开发 >

X86/Win32函数调用轨范研究

2013-03-14 
X86/Win32函数调用规范研究一、函数调用总体框图如下:二、C语言函数如下:四、解释如下:1、程序把esp的老先压入

X86/Win32函数调用规范研究

一、函数调用总体框图如下:                          

              X86/Win32函数调用轨范研究


二、C语言函数如下:


         X86/Win32函数调用轨范研究


四、解释如下:

         X86/Win32函数调用轨范研究

       1、程序把esp的老值先压入堆栈,然后把esp赋值给ebp,ebp不变,esp变化。

       2、esp=esp-12,这样做是为了放入局部变量。程序往ebp-4和ebp-c分别存入3和2,留ebp-8的位置存 以后计算出来的两数和。

       3、压入堆栈参数2和3,此时esp又减了8。call指令把返回地址压入堆栈。

       4、子函数先把上面的EBP的值压入堆栈,把把esp赋值给ebp,ebp不变,esp变化。

       5、又一条无效的指令把ecx压入堆栈,此时esp又减了12。用bp+8和bp+12娶到局部变量,相加后复制给eax。

       6、把ebp赋给esp,之后把上面ebp的值恢复(pop bp),ret指令把返回地址。

       7、esp=esp+8,因为调用子函数时压入了两个参数。

       8、把ebp赋给esp,之后把再上面ebp的值(图中没有显示)恢复,ret指令把返回地址。

       注:红色标注表示图中esp的位置。


热点排行