你可以反汇编看下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)
}
|