注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

且行且记录

点滴记录,行的更远!

 
 
 

日志

 
 

对象的反汇编  

2014-08-28 13:12:07|  分类: 一些练习 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

对象的反汇编
hcper @ 2014-8-24

Employee * ptr;

Boss b("Jhon","Smith",800.00);
ptr=&b;

ptr->print();
cout<<" earned $"<<ptr->earnings();

b.print();
cout<<" earned $"<<b.earnings();

0040103D  push    44480000
00401042  push    00412100                         ;  ASCII "Smith"
00401047  push    00412108                         ;  ASCII "Jhon"
0040104C  lea     ecx, dword ptr [ebp-3C] 取对象地址到ecx
0040104F  call    00404610 构造函数,初始化对象

00401054  lea     edx, dword ptr [ebp-3C]
00401057  mov     dword ptr [ebp-2C], edx // [ebp-2C]=ptr

0040105A  mov     eax, dword ptr [ebp-2C]
0040105D  mov     edx, dword ptr [eax]
0040105F  mov     ecx, dword ptr [ebp-2C]
00401062  call    dword ptr [edx+4] // ptr->print()

00401065  mov     eax, dword ptr [ebp-2C]
00401068  mov     edx, dword ptr [eax]
0040106A  mov     ecx, dword ptr [ebp-2C]
0040106D  call    dword ptr [edx] // ptr->earnings()
。。。

0040108C  lea     ecx, dword ptr [ebp-3C]
0040108F  call    004046D0 // b.print()

00401094  lea     ecx, dword ptr [ebp-3C]
00401097  call    004046B0 // b.earnings()
。。。


堆栈中的b对象内容
0012FEA8   /00412244/ vftable
0012FEAC   00390A60  ASCII "Jhon"
0012FEB0   00390A80  ASCII "Smith"
0012FEB4   44480000

虚表内容
00412244  /B0 46 40 00/ /D0 46 40 00/


 

  评论这张
 
阅读(29)| 评论(0)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017