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

    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、将累加器中的值 给 c
3、将i的值放到 计数器中(ecx)
4、计数器加1
5、将计数器中的值 给i

c = ++i
1、将i的值放到累加器中,
2、将累加器中的值加1
3、将累加器中的值 给 i
4、将 i的值给 计数器(ecx)中
5、将计数器中的值给c
1、

这里写图片描述

2、

这里写图片描述

3、

这里写图片描述

4、

这里写图片描述

5、

这里写图片描述

6、

这里写图片描述

7、

这里写图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值