三种循环反汇编代码比较

来源:互联网 发布:淘宝店铺头像图片logo 编辑:程序博客网 时间:2024/06/05 04:47

for循环

for (i = 0; i< 50; i++)

{

    c = c+i;

}

1.       为循环变量赋值              mov dword ptr [i], 0

2.       跳转到循环变量比较处 jmp [比较地址]

3.       修改循环变量                  mov eax, dword ptr[i]

                                          add ,eax ,1

                                          mov dword ptr[i], eax

4.       执行循环体                      mov eax , dword ptr[c]

                                           add eax, dword ptr[i]

                                          mov dword ptr[c], eax

5.       比较循环变量边界值     cmp dowrd ptr [i], 32

                                          jge [循环结束]

6.       跳转到循环开始的地方 jge [循环开始]

 

do while 循环

do

{

    a = a +1;

}

while(a < 50)

 

1.       执行循环体         mov eax, dword ptr [a]

                             add eax, 1

                             mov dword ptr[a], eax

2 比较结束条件   cmp dword ptr[a], 32

                                   jl [循环开始]

while 循环

while (a < 50)

{

    a = a + 1;

}

1.       比较循环控制条件   cmp dword ptr[a], 32

                                    jge [循环结束]

2.       循环体                       mov eax, dword ptr[a];

                                   add eax , 1

                                   mov dword ptr[i], eax

3.       跳转到循环开始      jmp [循环开始]

 

原创粉丝点击