c++反汇编代码分析:循环结构

2014-11-14 18:45:25 · 作者: · 浏览: 32

在此主要讨论或者验证三点:


1、循环结构的反汇编代码分析


2、函数中,局部变量的保存位置


3、方法的返回值保存位置验证


一个没有找到答案的疑问:


00401029 lea edi,[ebp-48h] 0040102C mov ecx,12h 00401031 mov eax,0CCCCCCCCh ;这段代码是在栈中开辟一个48字节大小的区域来存放局部变量,但是如果函数内没有局部变量,则是lea edi,[ebp-40h]一个局部变量,则是lea edi,[ebp-44h]两个局部变量,则是lea edi,[ebp-48h]也就是没有局部变量时开辟的40个字节,我用F11追踪过,单步调试时,这一部分区域并没有用到,这一区域的作用是什么?


代码如下:


1int sum()


2{


3 int subResult=0;


4 for (int i=0;i<3;i++)


5 {


6 subResult+=1;


7 }


8 return subResult;


9}


10


11void main()


12{


13 int result = sum();


14 printf("%\d\n",result);


15}