C++反汇编笔记(四)cout、endl

1、debug版

int main()
{
011752E0  push        ebp
011752E1  mov         ebp,esp
011752E3  sub         esp,0C0h
011752E9  push        ebx
011752EA  push        esi
011752EB  push        edi
011752EC  lea         edi,[ebp-0C0h]
011752F2  mov         ecx,30h
011752F7  mov         eax,0CCCCCCCCh
011752FC  rep stos    dword ptr es:[edi]
    cout << 5;
011752FE  mov         esi,esp
01175300  push        5
01175302  mov         ecx,dword ptr ds:[1180090h]
01175308  call        dword ptr ds:[11800C8h]
0117530E  cmp         esi,esp
01175310  call        __RTC_CheckEsp (011712E4h)
    return 0;
01175315  xor         eax,eax
}

00195317 pop edi
00195318 pop esi
00195319 pop ebx
0019531A add esp,0C0h
00195320 cmp ebp,esp
00195322 call __RTC_CheckEsp (01912E4h)
00195327 mov esp,ebp
00195329 pop ebp
0019532A ret

 
int main()
{
00065360  push        ebp
00065361  mov         ebp,esp
00065363  sub         esp,0C0h
00065369  push        ebx
0006536A  push        esi
0006536B  push        edi
0006536C  lea         edi,[ebp-0C0h]
00065372  mov         ecx,30h
00065377  mov         eax,0CCCCCCCCh
0006537C  rep stos    dword ptr es:[edi]
    cout << endl;
0006537E  mov         esi,esp
00065380  push        6138Eh
00065385  mov         ecx,dword ptr ds:[70090h]
0006538B  call        dword ptr ds:[7009Ch]
00065391  cmp         esi,esp
00065393  call        __RTC_CheckEsp (0612E4h)
    return 0;
00065398  xor         eax,eax
}

01152DEA pop edi
01152DEB pop esi
01152DEC pop ebx
01152DED add esp,0C0h
01152DF3 cmp ebp,esp
01152DF5 call __RTC_CheckEsp (011512E4h)
01152DFA mov esp,ebp
01152DFC pop ebp
01152DFD ret

 
int main()
{
01183540  push        ebp
01183541  mov         ebp,esp
01183543  sub         esp,0C0h
01183549  push        ebx
0118354A  push        esi
0118354B  push        edi
0118354C  lea         edi,[ebp-0C0h]
01183552  mov         ecx,30h
01183557  mov         eax,0CCCCCCCCh
0118355C  rep stos    dword ptr es:[edi]
    cout << 5<<endl;
0118355E  mov         esi,esp
01183560  push        118143Dh
01183565  mov         edi,esp
01183567  push        5
01183569  mov         ecx,dword ptr ds:[1190090h]
0118356F  call        dword ptr ds:[11900C8h]
    cout << 5<<endl;
01183575  cmp         edi,esp
01183577  call        __RTC_CheckEsp (011812E4h)
0118357C  mov         ecx,eax
0118357E  call        dword ptr ds:[119009Ch]
01183584  cmp         esi,esp
01183586  call        __RTC_CheckEsp (011812E4h)
    return 0;
0118358B  xor         eax,eax
}
0118358D  pop         edi
0118358E  pop         esi
0118358F  pop         ebx
01183590  add         esp,0C0h
01183596  cmp         ebp,esp
01183598  call        __RTC_CheckEsp (011812E4h)
0118359D  mov         esp,ebp
0118359F  pop         ebp
011835A0  ret  

2、release版

    cout << 5;
00CF12A0  mov         ecx,dword ptr ds:[0CF3030h]
00CF12A6  push        5
00CF12A8  call        dword ptr ds:[0CF3038h]
    return 0;
00CF12AE  xor         eax,eax
}
    cout << endl;
00EC12A0  mov         ecx,dword ptr ds:[0EC303Ch]
00EC12A6  push        0EC1700h
00EC12AB  call        dword ptr ds:[0EC3044h]
    return 0;
00EC12B1  xor         eax,eax
}
00EC12B3  ret  
    cout << 5<<endl;
00A412A0  mov         ecx,dword ptr ds:[0A43040h]
00A412A6  push        0A41700h
00A412AB  push        5
00A412AD  call        dword ptr ds:[0A43024h]
00A412B3  mov         ecx,eax
00A412B5  call        dword ptr ds:[0A43048h]
    return 0;
00A412BB  xor         eax,eax
}
00A412BD  ret  
时间: 2024-10-26 10:27:46

C++反汇编笔记(四)cout、endl的相关文章

Boost Thread学习笔记四

barrierbarrier类的接口定义如下: 1 class barrier : private boost::noncopyable   // Exposition only 2 { 3 public: 4   // construct/copy/destruct 5   barrier(size_t n); 6   ~barrier(); 7  8   // waiting 9   bool wait();10 }; barrier类为我们提供了这样一种控制线程同步的机制:前n - 1次调

Caliburn.Micro学习笔记(四)----IHandle&lt;T&gt;实现多语言功能

Caliburn.Micro学习笔记(四)----IHandle<T>实现多语言功能 说一下IHandle<T>实现多语言功能 因为Caliburn.Micro是基于MvvM的UI与codebehind分离, binding可以是双向的所以我们想动态的实现多语言切换很是方便今天我做一个小demo给大家提供一个思路 先看一下效果 点击英文  变成英文状态点chinese就会变成中文                          源码的下载地址在文章的最下边 多语言用的是资源文件建

代码管理工具 --- git的学习笔记四《重新整理git(1)》

1.创建版本库 mkdir  创建目录 cd  地址,到该地址下 pwd 显示当前目录 1.创建目录 $ mkdir startGit $ cd startGit $ pwd 显示当前目录 或者cd到桌面,然后再创建目录 2.初始化版本库 $ git init 初始化仓库 提示信息:Initialized empty Git repository in /Users/xingzai/Desktop/startGit/.git/ 建立一个空的git仓库在/Users/xingzai/Desktop

Linux学习笔记四:Linux的文件搜索命令

1.文件搜索命令  which 语法:which [命令名称] 范例:$which ls  列出ls命令所在目录 [[email protected] ~]$ which ls alias ls='ls --color=auto' /bin/ls 另外一个命令:whereis [名称名称],也可以列出命令所在目录. [[email protected] ~]$ whereis ls ls: /bin/ls /usr/share/man/man1/ls.1.gz /usr/share/man/ma

小猪的数据结构学习笔记(四)

小猪的数据结构学习笔记(四) 线性表之静态链表 --转载请注明出处:coder-pig 本章引言: 在二,三中中我们分别学习了顺序表中的线性表与单链表,线性表有点类似于 我们前面所学的数组,而单链表使用的最多的是指针,这里问个简单的问题, 如果是在以前没有指针的话,前辈先人们怎么实现单链表呢?大家思考下! 没有指针,那么用什么来代替呢?前辈先人们非常机智,想出了使用下标+游标的方式 来实现单链表的效果!也就是今天要讲的--静态链表! 当然你也可以直接跳过本章,因为有了单链表就没有必要用静态链表了

R实战读书笔记四

第三章 图形入门 本章概要 1 创建和保存图形 2 定义符号.线.颜色和坐标轴 3 文本标注 4 掌控图形维数 5 多幅图合在一起 本章所介绍内容概括如下. 一图胜千字,人们从视觉层更易获取和理解信息. 图形工作 R具有非常强大的绘图功能,看下面代码. > attach(mtcars) > plot(wt, mpg) > abline(lm(mpg~wt)) > title("Regression of MPG on Weight") > detach(m

Swift学习笔记四:数组和字典

最近一个月都在专心做unity3d的斗地主游戏,从早到晚,最后总算是搞出来了,其中的心酸只有自己知道.最近才有功夫闲下来,还是学习学习之前的老本行--asp.net,现在用.net做项目流行MVC,而不是之前的三层,既然技术在更新,只能不断学习,以适应新的技术潮流! 创建MVC工程 1.打开Visual studio2012,新建MVC4工程 2.选择工程属性,创建MVC工程 3.生成工程的目录 App_Start:启动文件的配置信息,包括很重要的RouteConfig路由注册信息 Conten

老男孩培训视频听课笔记四(在51cto上听的)

实际操作:     1.创建一个目录 mkdir 语法:mkdir [-mp] [目录名称]            一般与配合cd tree pwd等命令来实现,整个操作     2.建议一个文件 利用touch命令来完成 语法:touch [path]/filename            批量创建文件:        for f in `seq 1000`;do touch $f.txt;done         创建文件的命令很多:vi echo> > cat等命令      3.文件

NLTK学习笔记(四):自然语言处理的一些算法研究

自然语言处理中算法设计有两大部分:分而治之 和 转化 思想.一个是将大问题简化为小问题,另一个是将问题抽象化,向向已知转化.前者的例子:归并排序:后者的例子:判断相邻元素是否相同(与排序). 这次总结的自然语言中常用的一些基本算法,算是入个门了. 递归 使用递归速度上会受影响,但是便于理解算法深层嵌套对象.而一些函数式编程语言会将尾递归优化为迭代. 如果要计算n个词有多少种组合方式?按照阶乘定义:n! = n*(n-1)*...*1 def func(wordlist): length = le