2017-04-13 42 views
5

我最近一直在尋找Rust programming language。它是如何工作的? Rust代碼似乎被編譯成ELF或PE(等)二進制文件,但是我還沒有找到任何有關如何完成的信息?它是否被編譯爲中間格式,然後用gxx編譯其餘部分?任何幫助(或鏈接)將非常感激。Rust如何編譯爲機器碼?

+0

Rust編譯器使用LLVM作爲後端,像其他編譯器一樣(clang,Swift和其他)。這是否回答你的問題?目前還不清楚你在問什麼 – aochagavia

回答

18

Rust編譯器的代碼生成階段主要是由LLVM完成的。 LLVM是一組用於構建編譯器的工具,其中最着名的是C [++]編譯器clang[++]。首先,Rust編譯器(例如clang)會執行所有Rust特定的工作,例如類型檢查和借用檢查;最終它會生成LLVM-IR。 IR代表中間表示它可以與組件相媲美,但稍微高一點,最重要的是:與平臺無關。然後Rust編譯器只是調用LLVM並且說:

嘿,哥們,你可以請這個IR併爲當前平臺生成機器代碼嗎?這將是非常美妙的◕◡◕

爲了這LLVM迴應:

當然,沒問題,新的朋友。這裏是您高度優化的機器碼[例如] x86_64! ♫♪♫

之後,他們邀請了幾個朋友把它包裝在一個很好的[例如] ELF包中,並將它放在用戶文件系統中。 (and the user is like...)


這樣的信息可以在the official FAQ裏面包含了很多有趣的信息反正被發現。

+4

編譯過程中的各個部分都很有禮貌。 –

相關問題