反汇编:循环语句各个版本对比

4.6.循环语句各版本对比

代码及相关分析来自于《加密与解密》

时间2021年0311

 

1.do循环

【示例代码1】

int _tmain(int argc, _TCHAR* argv[]) {
    int nCount = 0;
    do
    {
        printf("%d
", nCount);
        nCount++;
    } while (nCount < argc);

    return 0;
}

image.png

 

x64-debug版本:

image.png

x64-release版本:


image.png

 

x86-debug版本:

image.png

 

x86-release版本:


image.png

 

2.while循环

【示例代码2】

int _tmain(int argc, _TCHAR* argv[]) {
    int nCount = 0;
    while (nCount < argc)
    {
        printf("%d
", nCount);
        nCount++;
    }
    return 0;
}

分析:

image.png

 

x64-debug版本:

image.png

 

x64-release版本:

image.png

 

x86-debug版本:

image.png

 

x86-release版本:

image.png

3.for循环

【示例代码3】

int _tmain(int argc, _TCHAR* argv[]) {
    for (int nCount = 0; nCount < argc; nCount++)
    {
        printf("%d
", nCount);
    }
    return 0;
}

分析:

 

x64-debug版本:

image.png

 

x64-release版本:

image.png

 

x86-debug版本:(与x64类似,具体看前几张图片)

image.png

 

x86-release版本:(与x64类似,具体看前几张图片)

image.png

 

 

 

原文地址:https://www.cnblogs.com/Xor0ne/p/14519231.html