一简单c++程序之反汇编
#include<iostream>
using namespace std;
class point3d;
class point2d;
class point3d
{
private:int x; int y; int z;
public:
point3d(int a = 0, int b = 0, int c = 0) :x(a), y(b), z(c) {}
};
class point2d
{
int a;
int b;
public:
point2d(int x=0,int y=0):a(x),b(y){}
operator point3d()
{
return{ a,b,0 };
}
};
int main()
{
point2d z;
point3d q = z;
return 0;
}
008538B4 lea eax,[q] ;将q的地址赋给eax
008538B7 push eax ;压栈.作为参数
008538B8 lea ecx,[z] ;将z的地址赋给ecx
008538BB call point2d::operator point3d (085133Eh)
00853380 push ebp
00853381 mov ebp,esp
00853383 sub esp,0CCh
00853389 push ebx
0085338A push esi
0085338B push edi
0085338C push ecx
0085338D lea edi,[ebp-0CCh]
00853393 mov ecx,33h
00853398 mov eax,0CCCCCCCCh
0085339D rep stos dword ptr es:[edi]
0085339F pop ecx ;
008533A0 mov dword ptr [this],ecx ;将 point2d z的地址赋给了this指针
return{ a,b,0 };
008533A3 push 0 ;0压栈
008533A5 mov eax,dword ptr [this]
008533A8 mov ecx,dword ptr [eax+4] ;将z的a变量的值赋给ecx
008533AB push ecx ;ecx压栈
008533AC mov edx,dword ptr [this]
008533AF mov eax,dword ptr [edx] ;将a的值赋给了eax中
008533B1 push eax ;eax压栈
008533B2 mov ecx,dword ptr [ebp+8] ;取出q的地址
008533B5 call point3d::point3d (0851357h) ;point3d(一个q的地址.参数.3个变量参数)
008533BA mov eax,dword ptr [ebp+8] ;将q的地址取出来.作为返回值
}
一简单c++程序之反汇编的更多相关文章
- Linux下简单C语言小程序的反汇编分析
韩洋原创作品转载请注明出处<Linux内核分析>MOOC课程http://mooc.study.163.com/course/USTC-1000029000 写在开始,本文为因为参加MOO ...
- ACEXML解析XML文件——简单示例程序
掌握了ACMXML库解析XML文件的方法后,下面来实现一个比较完整的程序. 定义基本结构 xml文件格式如下 <?xml version="1.0"?> <roo ...
- 用python开发简单ftp程序
根据alex老师视频开发的简单ftp程序,只能实现简单的get功能 ftp客户端程序: #!/usr/bin/env python #_*_ coding:utf-8 _*_ import socke ...
- 关于SIGSLOT的一个简单的程序
废话少说直接看代码即可,这只是一个简单的程序,可以帮我们简单地明白SIGSLOT是怎么回事.至于深入研究自己去百度吧. #include "sigslot.h" using nam ...
- 关于《数据格式修改》的简单应用程序(C语言)
关于<数据格式修改>的简单应用程序(C语言) 至亲爱的博友: 大家好,好久不见了.由于博主还是一名大学在校生,不可避免的需要和指导教师共同完成一些项目,因此前一段时间暂时停止了博客的更新. ...
- 简单购物车程序(Python)
#简单购物车程序:money_all=0tag=Trueshop_car=[]shop_info={'apple':10,'tesla':100000,'mac':3000,'lenovo':3000 ...
- 基于C语言libvirt API简单小程序
libvirt API简单小程序 1.程序代码如下 #include<stdio.h> #include<libvirt/libvirt.h> int getDomainInf ...
- 图解简单C程序的运行时结构
程序在内存中的存储分为三个区域,分别是动态数据区.静态数据区和代码区.函数存储在代码区,全局变量以及静态变量存储在静态数据区,而在程序执行的时候才会在动态数据区产生数据.程序执行的本质就是代码区的指令 ...
- MFC制作简单通讯录程序
学习c++和MFC一段时间了,苦于没有项目实战,所以自己写了一个简单的简单通讯录程序,以前用c#写简单很多,例程是这本书上的实例,我的第一个winform程序也是从这本书上学的,总结c#写的话更简单, ...
随机推荐
- 使用filter函数筛选出素数
function getPrimeNumber(arr) { return arr.filter(function (number) { if (typeof number !== 'number' ...
- 拓扑排序 topsort
拓扑排序 对一个有向无环图(Directed Acyclic Graph简称DAG)G进行拓扑排序,是将G中所有顶点排成一个线性序列,使得图中任意一对顶点u和v,若边(u,v)∈E(G),则u在线性序 ...
- LNMP一键安装包开启pathinfo和rewrite模式
此教程适用于集成安装包lnmp,官网是https://lnmp.org/ 一. 开启pathinfo #注释 下面这一行 #include enable-php.conf #载入新的配置文件 incl ...
- Java-JFrame-swing嵌套浏览器步骤
Java-JFrame-swing嵌套浏览器步骤 一.使用swing嵌套浏览器要实现的功能: 通过java的swing实现在一个窗体中嵌套一个浏览器,可以在这个浏览器中将另一个项目的内容显示出来,只需 ...
- 设置eclipse中的${user}
打开eclipse根目录找到eclipse.ini文件增加初始配置: -Duser.name=snzigod@hotmail.com 重启eclipse后${user}变量的值就变成了snzigod@ ...
- Shell脚本完成hadoop的集群安装
虽然整体实现的自动安装,但还是有很多需要完善的地方,比如说: 1. 代码目前只能在root权限下运行,否则会出错,这方面需要加权限判断: 2.另外可以增加几个函数,减少代码冗余: 3.还有一些判断不够 ...
- Windows和linux(ubuntu)互传文件简便快捷的方法
现在很多开发和测试的工作环境都是Linux,但测试后期报告的处理一般都是在Windows下完成的,所以需要把结果拿到Windows下. 如果是同一台PC还好些(windows下安装linux的虚拟机, ...
- 取出列表中第N大的数
array=list(range(10)) random.shuffle(array) print(array) def func1(array,n): d,k={},n while k>0: ...
- [转] 在vue中使用SockJS实现webSocket通信
最近接到一个业务需求,需要做一个聊天信息的实时展示的界面,这就需要和服务器端建立webSocket连接,从而实现数据的实时获取和视图的实时刷新.在此将我的实现记录下来,希望可以给有同样需求的人一些帮助 ...
- oracle游标遍历
--创建存储过程 CREATE OR REPLACE PROCEDURE xxxxxxxxxxx_p (--参数IN表示输入参数,OUT表示输入参数,类型可以使用任意Oracle中的合法类型. is_ ...