« 無限ループ…ちょっとの違いがデッカイ違いに…? | トップページ | 職人の技 »

2005年12月30日 (金)

無限ループ…ちょっとの違いがデッカイ違いに…?その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

結果同じになった…。

だからどうだと言う訳では無いのだが…。

なんとなく確認…。

|

« 無限ループ…ちょっとの違いがデッカイ違いに…? | トップページ | 職人の技 »

コメント

コメントを書く



(ウェブ上には掲載しません)




トラックバック

この記事のトラックバックURL:
http://app.cocolog-nifty.com/t/trackback/108365/7899954

この記事へのトラックバック一覧です: 無限ループ…ちょっとの違いがデッカイ違いに…?その2:

« 無限ループ…ちょっとの違いがデッカイ違いに…? | トップページ | 職人の技 »