|  | 
 
 发表于 2016-8-11 09:52:45
|
显示全部楼层 
| 你可以反汇编看下
 
 复制代码int main()
{ int x=1;
013F1430  push        ebp  
013F1431  mov         ebp,esp  
013F1433  sub         esp,0D8h  
013F1439  push        ebx  
013F143A  push        esi  
013F143B  push        edi  
013F143C  lea         edi,[ebp-0D8h]  
013F1442  mov         ecx,36h  
013F1447  mov         eax,0CCCCCCCCh  
013F144C  rep stos    dword ptr es:[edi]  
013F144E  mov         dword ptr [x],1  
int y;
if(x>0)
013F1455  cmp         dword ptr [x],0  
int y;
if(x>0)
013F1459  jle         main+3Ch (013F146Ch)  
        y=f(x);
013F145B  mov         eax,dword ptr [x]  
013F145E  push        eax  
013F145F  call        f (013F11EAh)  //调用f函数后一步步向下走
013F1464  add         esp,4  
013F1467  mov         dword ptr [y],eax  
else 
013F146A  jmp         main+4Dh (013F147Dh)  //来到这里就是else  直接跳走到下面
y=-f(x);
013F146C  mov         eax,dword ptr [x]  
013F146F  push        eax  
013F1470  call        f (013F11EAh)  
013F1475  add         esp,4  
013F1478  neg         eax  
013F147A  mov         dword ptr [y],eax  
printf("%d",y);    //printf
013F147D  mov         esi,esp  
013F147F  mov         eax,dword ptr [y]  
013F1482  push        eax  
013F1483  push        13F5D0Ch  
013F1488  call        dword ptr ds:[13F92BCh]  
013F148E  add         esp,8  
013F1491  cmp         esi,esp  
013F1493  call        __RTC_CheckEsp (013F113Bh)  
}
 | 
 |