博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
汇编代码分析
阅读量:6485 次
发布时间:2019-06-23

本文共 1923 字,大约阅读时间需要 6 分钟。

原来代码:

#include 
#include
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

  

转载地址:http://xgnuo.baihongyu.com/

你可能感兴趣的文章
L1-009. N个数求和
查看>>
实参传递不当导致的运行时错误
查看>>
sqlserver 批量删除存储过程(转)
查看>>
自建型呼叫中心
查看>>
Inno setup中定制安装路径
查看>>
要懂得对你的老板好一点!
查看>>
visio如何让动态连接线的单箭头变成双箭头?
查看>>
poj 1273 Drainage Ditches 网络流最大流基础
查看>>
Bash: how to check if a process id (PID) exists
查看>>
Mirantis Fuel fundations
查看>>
启动Tomcat一闪而过——分析及解决过程
查看>>
Android intent action大全
查看>>
使用 Flash Builder 的 Apple iOS 开发过程
查看>>
RabbitMq_05_Topics
查看>>
redis.conf
查看>>
SCALA中的函数式编程
查看>>
将List<int> 转换为用逗号连接为字符串
查看>>
C/C++中extern关键字详解
查看>>
Eclipse 最有用的快捷键
查看>>
K & DN 的前世今生(微软开源命名变革)
查看>>