回答

0

是的,代码的二进制输出是不同的。

此外,当使用不同编译器选项的相同语言时,生成的输出可能不同(带/不带调试信息,带/不带优化)。

以你例如:

  • 在C++编译器产生用于CPU的直接执行的机器代码
  • Java中的编译器生成将通过字节代码解释器或JIT(只是运行的字节码在编译器中)

但是在等效的程序中,程序输出应该是相同的(在你的情况下为HELLO)。

0

这取决于很多因素(源语言,目标平台,硬件,编译器标志,执行环境等)。

编程语言规范通常描述语言结构和语义,而不需要深入研究将实现细节留给编译器供应商。

某些语言有很不同的方言(如C#和Visual Basic),但编译为相同的managed code

根据目标平台,用某种语言编写的程序可以编译为完全不同的二进制文件。

为了提供最大的灵活性compilers设计时考虑到了模块性,并且由不同部分(词法分析器,解析器,IL优化器,代码生成器)和编译阶段组成。这就是为什么例如扩展GCC以支持未来的平台可以附加新的代码生成器而不触及其他部分的原因。

相关问题