無限ループ…ちょっとの違いがデッカイ違いに…?その2
蛇足だけど…
もし、「while(1)」を「for」で実現すると…
「for(;1;)」で同じになるかなぁ~と
void main(void)
{
int a = 0;
for(;1;)
{
a++;
}
while(1)
{
a++;
}
}
をコンパイルしてみる…。
1: void main(void)
2: {
00401010 push ebp
00401011 mov ebp,esp
00401013 sub esp,44h
00401016 push ebx
00401017 push esi
00401018 push edi
00401019 lea edi,[ebp-44h]
0040101C mov ecx,11h
00401021 mov eax,0CCCCCCCCh
00401026 rep stos dword ptr [edi]
3: int a = 0;
00401028 mov dword ptr [ebp-4],0
4: for(;1;)
0040102F mov eax,1
00401034 test eax,eax
00401036 je main+33h (00401043)
5: {
6: a++;
00401038 mov ecx,dword ptr [ebp-4]
0040103B add ecx,1
0040103E mov dword ptr [ebp-4],ecx
7: }
00401041 jmp main+1Fh (0040102f)
8: while(1)
00401043 mov edx,1
00401048 test edx,edx
0040104A je main+47h (00401057)
9: {
10: a++;
0040104C mov eax,dword ptr [ebp-4]
0040104F add eax,1
00401052 mov dword ptr [ebp-4],eax
11: }
00401055 jmp main+33h (00401043)
12: }
00401057 pop edi
00401058 pop esi
00401059 pop ebx
0040105A mov esp,ebp
0040105C pop ebp
0040105D ret
結果同じになった…。
だからどうだと言う訳では無いのだが…。
なんとなく確認…。
| 固定リンク
コメント