CWangChao

深入浅出,厚积薄发,有一技之长才能立足于一席之地!

博客园 首页 新随笔 联系 订阅 管理

由汇编分析出c代码

 

 


 

int myfuction(int a,int b)
{
00411A20 PUSH EBP
00411A21 MOV  EBP,ESP
00411A23 SUB  ESP,0E8H
00411A29 PUSH EBX
00411A2A PUSH ESI
00411A2B PUSH EDI
00411A2C LEA  EDI,[EBP-0E8H]
00411A32 MOV  ECX,3AH
00411A37 MOV  EAX,0CCCCCCCH
00411A3C REP  STOS DWORD PTR [EDI]

 

 

00411A3E MOV  EAX,DWORD PTR [a]          ;
00411A41 ADD  EAX,DWORD PTR [b]          ;
00411A44  MOV  DWORD PTR[d],EAX          ;d=a+b

 

00411A47 MOV  DWORD PTR[i],1             ;i=1
00411A4B MOV  DWORD PTR[c],0             ;c=0
00411A55 CMP  DWORD PTR[c],64H           ;while(c<100)
00411A59 JGE  myfunction+46h(411A66H)    ;
00411A5B MOV  EAX,DWORD PTR [c]          ;
00411A5E ADD  EAX,DWORD PTR [i]          ;
00411A61 MOV  DWORD PTR[c],EAX           ;c=c+1
00411A64 JMP  myfunction+35h(411A55H)
00411A66 MOV  EAX,DWORD PTR[c]  ;

 

00411A69 MOV  DWORD PTR [EBP-0E8H],EAX   ;switch(c)
00411A6F CMP  DWORD PTR [EBP-0E8H],0     ;case 0:
00411A76 JE   myfunction+63h(411A83H)    ;d=1
00411A78 CMP  DWORD PTR [EBP-0E8H],1     ;case 1:
00411A83 MOV  DWORD PTR[d],1             ;d=1
00411A8A MOV  EAX,DWORD PTR [c]          ;
00411A8D MOV  DWORD PTR [d],EAX          ;
00411A90 JMP  myfunction+79h(411A99H)    ;break;
00411A92 MOV  DWORD PTR[d],0             ;default:
                                         ;d=0

 

00411A99 MOV  EAX,DWORD PTR[d]          ;返回值d
00411A9C POP  EDI
00411A9D POP  ESI
00411A9E POP  EBX
00411A9F MOV  ESP,EBP
00411AA1 POP  EBP
00411AA2 RET
}

 

 

 

 

 

 

 

 

posted on 2010-07-01 20:39  CWangChao  阅读(147)  评论(0)    收藏  举报