回答

0

是的,代碼的二進制輸出是不同的。

此外,當使用不同編譯器選項的相同語言時,生成的輸出可能不同(帶/不帶調試信息,帶/不帶優化)。

以你例如:

  • 在C++編譯器產生用於CPU的直接執行的機器代碼
  • Java中的編譯器生成將通過字節代碼解釋器或JIT(只是運行的字節碼在編譯器中)

但是在等效的程序中,程序輸出應該是相同的(在你的情況下爲HELLO)。

0

這取決於很多因素(源語言,目標平臺,硬件,編譯器標誌,執行環境等)。

編程語言規範通常描述語言結構和語義,而不需要深入研究將實現細節留給編譯器供應商。

某些語言有很不同的方言(如C#和Visual Basic),但編譯爲相同的managed code

根據目標平臺,用某種語言編寫的程序可以編譯爲完全不同的二進制文件。

爲了提供最大的靈活性compilers設計時考慮到了模塊性,並且由不同部分(詞法分析器,解析器,IL優化器,代碼生成器)和編譯階段組成。這就是爲什麼例如擴展GCC以支持未來的平臺可以附加新的代碼生成器而不觸及其他部分的原因。

相關問題