17- ++i和i++汇编代码

来源:互联网 发布:6city类似软件 编辑:程序博客网 时间:2024/06/02 00:20
    int i = 0;00B417BE  mov         dword ptr [i],0      int c;    i++;00B417C5  mov         eax,dword ptr [i]  00B417C8  add         eax,1  00B417CB  mov         dword ptr [i],eax      ++i;00B417CE  mov         eax,dword ptr [i]  00B417D1  add         eax,1  00B417D4  mov         dword ptr [i],eax      c = i++;00B417D7  mov         eax,dword ptr [i]  00B417DA  mov         dword ptr [c],eax  00B417DD  mov         ecx,dword ptr [i]  00B417E0  add         ecx,1  00B417E3  mov         dword ptr [i],ecx      c = ++i;00B417E6  mov         eax,dword ptr [i]  00B417E9  add         eax,1  00B417EC  mov         dword ptr [i],eax  00B417EF  mov         ecx,dword ptr [i]  00B417F2  mov         dword ptr [c],ecx  
发现i++ 和++i的反汇编代码步骤一样,都是三步骤:都是1、先将i放到累加器中(eax累加器),2、然后对累加器中的数进行+13、然后将累加器中的结果给i而将它与表达式放在一起后,就结果不同了c = i++;1、将i的值放到累加器中,2、将累加器中的值 给 c3、将i的值放到 计数器中(ecx)4、计数器加15、将计数器中的值 给ic = ++i1、将i的值放到累加器中,2、将累加器中的值加13、将累加器中的值 给 i4、将 i的值给 计数器(ecx)中5、将计数器中的值给c

1、

这里写图片描述

2、

这里写图片描述

3、

这里写图片描述

4、

这里写图片描述

5、

这里写图片描述

6、

这里写图片描述

7、

这里写图片描述