for循环反汇编分析

for (int i = 0; i < 5; i++)
 
//初始化表达式
 
00A41895  mov         dword ptr [ebp-8],0 
 
00A4189C  jmp         00A418A7 
 
//i++
 
00A4189E  mov         eax,dword ptr [ebp-8] 
 
00A418A1  add         eax,1 
 
00A418A4  mov         dword ptr [ebp-8],eax 
 
//条件表达式
 
00A418A7  cmp         dword ptr [ebp-8],5 
 
00A418AB  jge         00A418C0         //jump great equal  大于等于则跳出
 
{
 
printf("%d \n", i);
 
//printf函数调用
 
00A418AD  mov         eax,dword ptr [ebp-8]  //把i值赋给eax
 
00A418B0  push        eax 
 
00A418B1  push        0A47B30h 
 
00A418B6  call        00A410D2  //上面push进入printf的两个参数
 
00A418BB  add         esp,8  //提升栈空间
 
}
 
00A418BE  jmp         00A4189E  //执行完后进行i++
 
//函数外部语句
 
return 0;
 
00A418C0  xor         eax,eax 
 
}
 
00A418C2  pop         edi 
 
00A418C3  pop         esi 
 
00A418C4  pop         ebx 
 
00A418C5  add         esp,0CCh 
 
00A418CB  cmp         ebp,esp 
 
00A418CD  call        00A4124E 
 
00A418D2  mov         esp,ebp 
 
00A418D4  pop         ebp 
 
00A418D5  ret 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值