如果我想用两种不同的语言打印“HELLO”,比如 c++ 和 java,代码的二进制输出是否也可能不同.. ??
问问题
603 次
2 回答
0
它取决于很多因素(源语言、目标平台、硬件、编译器标志、执行环境……)。
编程语言规范通常描述语言结构和语义,而不深入研究实现细节,将其留给编译器供应商。
某些语言有非常不同的方言(例如 C# 和 Visual Basic),但编译为相同的托管代码。
根据目标平台,用某种语言编写的程序可以编译成完全不同的二进制文件。
为了提供最大的灵活性,编译器在设计时考虑了模块化,并且由不同的部分(词法分析器、解析器、IL 优化器、代码生成器)和编译阶段组成。这就是为什么可以扩展 GCC 以支持未来平台的原因,即在不触及其他部分的情况下附加新的代码生成器。
于 2013-10-10T13:03:17.703 回答
0
是的,代码的二进制输出是不同的。
此外,当使用具有不同编译器选项的相同语言时,生成的输出可能会有所不同(有/没有调试信息,有/没有优化)。
以你为例:
- 在 C++ 中,编译器生成机器代码以直接执行 CPU
- 在 java 中,编译器生成字节码,这些字节码将通过字节码解释器或 jit(即时编译器)运行
但是在等效程序中,程序输出应相同(在您的情况下HELLO
)。
于 2013-10-10T11:32:03.213 回答