`
yiyeqinghuasoon
  • 浏览: 643426 次
文章分类
社区版块
存档分类
最新评论

菜鸟学反汇编5—cout char型和其他数值型

 
阅读更多

#include<iostream>

#include<iostream>

#include<iostream>

using namespace std;

using namespace std;

using namespace std;

int main()

int main()

int main()

{

{

{

int i=0;

int i=0;

cout<<"Good";

cout<<"Good"<<i;

cout<<i;

cout<<"Good"<<"Bad";

}

}

}

var_4= dword ptr -4

var_4= dword ptr -4

argc= dword ptr 8

argc= dword ptr 8

argc= dword ptr 8

argv= dword ptr 0Ch

argv= dword ptr 0Ch

argv= dword ptr 0Ch

envp= dword ptr 10h

envp= dword ptr 10h

envp= dword ptr 10h

push ebp

push ebp

push ebp

mov ebp, esp

mov ebp, esp

mov ebp, esp

push ecx

push ecx

mov [ebp+var_4], 0

mov [ebp+var_4], 0

push offset aGood ; "Good"

mov eax, [ebp+var_4]

push offset unk_421838 ; int

push eax

push offset aBad ; "Bad"

call sub_4023E0

push offset aGood ; "Good"

push offset aGood ; "Good"

add esp, 8

push offset unk_421838 ; int

push offset unk_41A468 ; int

mov eax, [ebp+var_4]

call sub_4023D0

call sub_401030

push eax

add esp, 8

add esp, 8

mov ecx, offset unk_421838

mov ecx, eax

push eax ; int

call sub_401040

call sub_401030

call sub_401030

xor eax, eax

xor eax, eax

add esp, 8

mov esp, ebp

mov esp, ebp

xor eax, eax

pop ebp

pop ebp

pop ebp

反思:

可以见得不管使用了几个cout,调用的函数的次数都会根据输出元素的个数而决定,而调用函数的个数和输出参数的种类决定。注意在如果程序中存在输出变量,则在函数头部会出现push ecx。这个入栈操作可能是在某个输出变量的函数中被清理。是不是如果有非char变量输出就会有push ecx之类的操作?

下步:

证明以上猜想

分享到:
评论

相关推荐

    ncout高阶格式化操作

    这篇文章主要讲解如何在C++中使用cin/cout进行高级的格式化输出操作,包括数字的各种计数法(精度)输出,左或右对齐,大小写等等。通过本文,您可以完全脱离scanf/printf,仅使用cin/cout来完成一切需要的格式化...

    cin与cout的用法

    cin与cout的用法

    cin与cout用法

    本文件是对cin和cout一些用法的总结,框图结构,需要用mindjet打开,(同时推介一下mindjet这款工具,很适合代码爱好者总结)。对cin、cout用法迷惑的请进

    cout不打印,不显示,不输出 怎么办?

    解决cout不显示,不输出,不打印

    cout格式控制

    要讲解如何在C++中使用cout进行高级的格式化输出操作,包括数字的各种计数法(精度)输出,左或右对齐,大小写等等。通过本文,您可以完全脱离scanf/printf,仅使用cout来完成一切需要的格式化输入输出功能(从非...

    C/C++输出彩色文字printf和cout显示的文字是彩色的有颜色的

    C/C++输出彩色文字printf和cout显示的文字是彩色的有颜色的

    C++中Cout的详细实现介绍

    详细介绍了C++中,cout的实现方式。

    printf和cout的比较.pdf

    描述C++语法的关键用法,以及注重点和技巧,方便开发人员减少跳坑。

    cout输出格式控制

    主要是对cout之类的一些操纵运算子。它是I/O流控制头文件,就像C里面的格式化输出一样。

    好cout.zip

    cout.zip 希望对感兴趣的有所帮助

    C++ 基本的输入输出cout

    本章将讨论 C++ 编程中最基本和最常见的 I/O 操作。 C++ 的 I/O 发生在流中,流是字节序列。如果字节流是从设备(如键盘、磁盘驱动器、网络连接等)流向内存,这叫做输入操作。如果字节流是从内存流向设备(如显示...

    基于对话框例子程序,MFC调用控制台,利用cout、printf输出信息(已更新)

    基于对话框例子程序,MFC调用控制台,利用cout、printf输出信息 包含利用cout、printf输出unicode信息到控制台

    C++。C++实验C++。C++实验

    cout&lt;&lt;"enter two char:"; cin&gt;&gt;a&gt;&gt;b; fac(a,b); } long fac(int n) {long f; if(n)cout,error!"; else if(n==0)f=1; else f=fac(n-1)*n; return (f); } void fac(char*x,char*y) {int i; strcat (x,y); i=strlen(x)...

    型字符数组的合并

    型字符数组的合并 char ch1[]="what's your name";//没设定长度:初始化时编译器自动为它设定了长度为17个字节 char ch2[]="my name is Jack";//没设定长度:初始化时编译器自动为它设定了长度为16个字节 strcat(ch1...

    新手学习C++入门资料

    输入和输出是通过C++类来实现的,cin和cout是这些类的实例,他们是在C++语言的外部实现。 在C++语言中,有了一种新的注释方法,就是‘//’,在该行//后的所有说明都被编译器认为是注释,这种注释不能换行。C++中...

    cin和cout提速

    在主函数main开头加入一下两句,可以让cin和cout速度大幅度增加: #include int main() { ios::sync_with_stdio(false); cout.tie(NULL); return 0; } 直观感受一下加了这两句对C++读入的性能提升(貌似比用scanf...

    程序员面试宝典题目总结

    unsigned char a = 0xA5; unsigned char b = ~a&gt;&gt;4; printf("b = %d\n", b); return 0; } 3. 下面程序的结果是: #include int main(int argc, char* argv[]) { unsigned int a = 0xFFFFFFF7; unsigned char ...

    基于对话框例子程序,MFC调用控制台,利用cout、printf输出信息

    基于对话框例子程序,MFC调用控制台,利用cout、printf输出信息

    新版EditLog,重定向cout内容到CEdit窗口

    重定向cout内容到CEdit窗口,新版本EditLog支持VC++2010; 旧版信息 /*\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\ \ editlog.h, Fast asynchronous text logging using a ...

    char数组的错误认识

    其是数组没有为空的,只要你申请了空间(数组一定以就在栈上有自己的空间),空间里就有数据,可以输出.然而: 你用memset把数组空间全部赋值为0了,是可以判断的.但是需要判断空间的内容,...'\0'和NULL 都不对 cout空了"; }

Global site tag (gtag.js) - Google Analytics