一简单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的地址赋给eax008538B7 push eax ;压栈.作为参数008538B8 lea ecx,[z] ;将z的地址赋给ecx008538BB call point2d::operator point3d (085133Eh)
00853380 push ebp00853381 mov ebp,esp00853383 sub esp,0CCh00853389 push ebx0085338A push esi0085338B push edi0085338C push ecx0085338D lea edi,[ebp-0CCh]00853393 mov ecx,33h00853398 mov eax,0CCCCCCCCh0085339D 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变量的值赋给ecx008533AB 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#写的话更简单, ...
随机推荐
- NSString 使用 copy、strong
// 首先定义2个属性 @property (nonatomic, strong) NSString *stStr; @property (nonatomic, copy) NSString *coS ...
- 使用 CFile 的子类 CStdioFile 的注意事项
目前为止只用到了 ReadString,也了解了一下 WriteString. 由于程序需要,本来程序中是用的CFile, 但是需要逐行读取文件数据,所以谷歌找到了 ReadString 类 —— 继 ...
- C#基础-循环语句
while语句 int i = 1,sum=0; while (i <= 100) { sum += i; i++; } Console.WriteLine(sum); do···while语句 ...
- 【Linux命令】nohup和&差异,查看进程和终止进程!
最近在开发dueros的技能,官方提供的PHPSDK中有多个实力,而运行实例的命令如下是 nohup php -S 0.0.0.0:8029 myindex.php & 从命令来看,肯定是在8 ...
- LeetCode(260) Single Number III
题目 Given an array of numbers nums, in which exactly two elements appear only once and all the other ...
- 排序 sort函数
sort函数见下表: 函数名 功能描述 sort 对给定区间所有元素进行排序 stable_sort 对给定区间所有元素进行稳定排序 partial_sort 对给定区间所有元素部分排序 partia ...
- Mysql之查看数据库版本
Mysql版本: 登入数据库的时候: select @@version; select version(); mysql> select @@version; +-----------+ | @ ...
- CodeForces 568B DP Symmetric and Transitive
题意: 根据离散数学的内容知道,一个二元关系是一个二元有序组<x, y>的集合. 然后有一些特殊的二元关系,比如等价关系,满足三个条件: 自反性,任意的x,都有二元关系<x, x&g ...
- Huawei比赛数据分析
如何评价2018年华为软件精英挑战赛赛题? https://www.zhihu.com/question/268448695 1.时间与时间戳之间的转换 https://blog.csdn.net/g ...
- [译]pandas中的iloc loc的区别?
loc 从特定的 gets rows (or columns) with particular labels from the index. iloc gets rows (or columns) a ...