• 汇编代码分析


    原来代码:

    #include <boost/thread.hpp>
    #include <iostream>
    
    class Base
    {
    public:
    	virtual void Do() = 0;
    };
    
    class Derived1: public Base
    {
    public:
    	virtual void Do()
    	{
    		std::cout << "Derived1:Do\n";
    	}
    };
    class Derived2: public Base
    {
    public:
    	virtual void Do()
    	{
    		std::cout << "Derived1:Do\n";
    	}
    };
    
    int main()
    {
    	Base* lpBase = new Derived1();
    	lpBase->Do();
    	return 0;
    }
    

     debug反汇编后:

    int main()
    {
    00517770  push        ebp  
    00517771  mov         ebp,esp 
    00517773  sub         esp,0DCh 
    00517779  push        ebx  
    0051777A  push        esi  
    0051777B  push        edi  
    0051777C  lea         edi,[ebp-0DCh] 
    00517782  mov         ecx,37h 
    00517787  mov         eax,0CCCCCCCCh 
    0051778C  rep stos    dword ptr es:[edi] 
    	Base* lpBase = new Derived1();
    0051778E  push        4    
    00517790  call        operator new (5044A9h) 
    00517795  add         esp,4 
    00517798  mov         dword ptr [ebp-0D4h],eax 
    0051779E  cmp         dword ptr [ebp-0D4h],0 
    005177A5  je          main+4Ah (5177BAh) 
    005177A7  mov         ecx,dword ptr [ebp-0D4h] 
    005177AD  call        Derived1::Derived1 (50AF84h) 
    005177B2  mov         dword ptr [ebp-0DCh],eax 
    005177B8  jmp         main+54h (5177C4h) 
    005177BA  mov         dword ptr [ebp-0DCh],0 
    005177C4  mov         eax,dword ptr [ebp-0DCh] 
    005177CA  mov         dword ptr [lpBase],eax 
    	lpBase->Do();
    005177CD  mov         eax,dword ptr [lpBase] 
    005177D0  mov         edx,dword ptr [eax] 
    005177D2  mov         esi,esp 
    005177D4  mov         ecx,dword ptr [lpBase] 
    005177D7  mov         eax,dword ptr [edx] 
    005177D9  call        eax  
    005177DB  cmp         esi,esp 
    005177DD  call        @ILT+19470(__RTC_CheckEsp) (506C13h) 
    	return 0;
    005177E2  xor         eax,eax 
    }
    005177E4  pop         edi  
    005177E5  pop         esi  
    005177E6  pop         ebx  
    005177E7  add         esp,0DCh 
    005177ED  cmp         ebp,esp 
    005177EF  call        @ILT+19470(__RTC_CheckEsp) (506C13h) 
    005177F4  mov         esp,ebp 
    005177F6  pop         ebp  
    005177F7  ret              
    

      

  • 相关阅读:
    23.safari history.back的一个坑
    22.一个小小的广播效果
    UI13-GET POST 同步,异步-代理 Block请求方式。
    UI11-数据解析:Json DOM SAX 解析
    UI10-通讯录
    UI-09 cell 高度自适应)
    UI06-scrollView 滚动视图 pagecontroll 页面控制
    UI05-‍手势用图片做实验
    UI04-NSTimer 打地鼠
    UI03-viewController 视图跳转:
  • 原文地址:https://www.cnblogs.com/xiangshancuizhu/p/2941273.html
Copyright © 2020-2023  润新知