老钟古

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::

这个标题可能定义的不是很明确,在VS2005中看到的汇编代码可以看出,没有对循环变量i进行初始化或者赋初值的情况比起有的情况会多几条不同的汇编指令。这一点自己也不是很明白,但可以肯定的是我们不能够犯这么低级的错误。如果可以,欢迎提出见解。详情看代码:

 

代码
 3 8:     int c = a + b;
 4 0041328E  mov         eax,dword ptr [a] 
 5 00413291  add         eax,dword ptr [b] 
 6 00413294  mov         dword ptr [c],eax 
 7      9:     int i = 0;  //对i进行初始化
 8 00413297  mov         dword ptr [i],0 
16     17:     do {
17     18:         c += i;
18 0041329E  mov         eax,dword ptr [c] 
19 004132A1  add         eax,dword ptr [i] 
20 004132A4  mov         dword ptr [c],eax 
21     19:         i++;
22 004132A7  mov         eax,dword ptr [i] 
23 004132AA  add         eax,1 
24 004132AD  mov         dword ptr [i],eax 
25     20:     } while ( c < 100 );
26 004132B0  cmp         dword ptr [c],64h 
27 004132B4  jl          myfunction+2Eh (41329Eh) 


31 8:     int c = a + b;
32 00413295  mov         eax,dword ptr [a] 
33 00413298  add         eax,dword ptr [b] 
34 0041329B  mov         dword ptr [c],eax 
35      9:     int i;  //未进行初始化的
43     17:     do {
44     18:         c += i;
45 0041329E  cmp         byte ptr [ebp-0DDh],0 
46 004132A5  jne         myfunction+44h (4132B4h) 
47 004132A7  push        offset  (413300h) 
48 004132AC  call        @ILT+165(__RTC_UninitUse) (4110AAh) 
49 004132B1  add         esp,4 
50 004132B4  mov         eax,dword ptr [c] 
51 004132B7  add         eax,dword ptr [i] 
52 004132BA  mov         dword ptr [c],eax 
53     19:         i++;
54 004132BD  cmp         byte ptr [ebp-0DDh],0 
55 004132C4  jne         myfunction+63h (4132D3h) 
56 004132C6  push        offset  (413300h) 
57 004132CB  call        @ILT+165(__RTC_UninitUse) (4110AAh) 
58 004132D0  add         esp,4 
59 004132D3  mov         eax,dword ptr [i] 
60 004132D6  add         eax,1 
61 004132D9  mov         byte ptr [ebp-0DDh],1 
62 004132E0  mov         dword ptr [i],eax 
63     20:     } while ( c < 100 );
64 004132E3  cmp         dword ptr [c],64h 
65 004132E7  jl          myfunction+2Eh (41329Eh) 
 
 
68  9:     int i;
69  10:    i = 0;  //赋值操作
70 00413297  mov         dword ptr [i],0 
78     18:     do {
79     19:         c += i;
80 0041329E  mov         eax,dword ptr [c] 
81 004132A1  add         eax,dword ptr [i] 
82 004132A4  mov         dword ptr [c],eax 
83     20:         i++;
84 004132A7  mov         eax,dword ptr [i] 
85 004132AA  add         eax,1 
86 004132AD  mov         dword ptr [i],eax 
87     21:     } while ( c < 100 );
88 004132B0  cmp         dword ptr [c],64h 
89 004132B4  jl          myfunction+2Eh (41329Eh) 

 

 

posted on 2010-10-19 23:37  老钟古  阅读(327)  评论(0编辑  收藏  举报