Turbo C ++和Borland C ++编译器之间的区别

时间:2015-06-26 14:42:24

标签: c++ compilation decompiler turbo-c++ borland-c++

我使用Turbo C ++ 3.0和Borland C ++ 5.02编译器编译了两个代码,并且遇到了一些奇怪的事情我的鳕鱼是这样的:

第一个代码

void main()
{
}  

第二个代码

#include<iostream.h>
#include<conio.h>
void main()
{
}  

我从他们那里得到了这些结果:
- Borland C ++(第一代码):51KB
- Borland C ++(第二代码):51KB
- Turbo C ++(第一代码):5.89KB
- Turbo C ++(第一代码):16.3KB
我用十六进制查看器检查了两个Borland执行文件,并意识到它们完全相同 我在IDA pro中检查了这些编译器的第一个代码,并看到了这些图:

Turbo C ++
turboC++

Borland C ++
borlandC++

现在我有这些问题,我希望你能回答 1 - 为什么Borland C ++编译的文件是相同的,当其中一个明显没有一些包含而另一个包含? 2 - 为什么Boland C ++编译的文件很大? (差不多大10倍)和编制的那么大的东西?
3 - 当我向this Site提交第一个代码时,我可以看到简单的无效主函数的汇编代码,我意识到Borland C ++代码非常相似但是Turbo C ++汇编代码非常复杂而且不是同样,为什么? 4 - 为什么这个用Turbo C ++编译的简单代码会创建这么多函数,你可以在它的图形中看到它们?

对于这个很长的问题感到抱歉,但是如果你能向我澄清一下这会很棒我现在很困惑。

1 个答案:

答案 0 :(得分:1)

我会尽力回答这些问题,但您可能需要将您的问题发布到Borland论坛以获取详细答案。无论如何,请升级您的编译器。

  

1 - 为什么Borland C ++编译的文件是相同的,当其中一个明显没有一些包含而另一个包含?

您的程序没有功能且不正确。 (main函数始终返回int。)

您可以包含所需的所有头文件。您不使用它们,因此不会生成其他代码。

您的程序不需要任何头文件。具有相同的功能。

  

2 - 为什么Boland C ++编译的文件很大? (几乎大10倍)和编译的那么多大小?

有很多种可能性。您必须查看生成的汇编代码,生成的机器代码或发布到Borland论坛。

这还取决于您是在调试模式还是在发布模式下编译。它还取决于您是为静态库还是动态库编译的。

从根本上说,Borland编译器可能会生成满足Windows更高版本所需标准的代码,而不是Turbo C ++需要支持的代码。研究“.com”和“。exe”格式之间的区别。

  

3 - 当我向本网站提交第一个代码时,我可以看到简单的无效主函数的汇编代码,我意识到Borland C ++代码非常相似,但是Turbo C ++汇编代码非常复杂而且不是同样,为什么?

请参阅我对#2的回答。

  

4 - 为什么这个用Turbo C ++编译的简单代码会创建这么多函数,你可以在它的图形中看到它们?

很可能因为您正在调试模式下进行编译;或者因为Turbo C ++是一个更简单的编译器,它不像Borland那样优化库和代码。在调试模式下,可执行文件中包含符号信息。

顺便说一下,可执行文件的大小可能不是放在内存中的可执行代码的大小。可执行格式允许将除可执行代码之外的东西放置在文件中,例如程序符号和行号。

不要再担心程序大小了。在优化大小之前,使程序正确,稳健且安全地运行。