2015-12-19 37 views

回答

3

它絕對可以用Swift生成機器碼。實際上,默認情況下,當您在Xcode或swiftc命令行編譯器中編譯Swift程序時,生成的可執行文件由機器代碼組成。

LLVM字節碼是在構建過程中的某個點生成的,但生成的最終可執行文件是機器碼。有一些編譯器選項可以讓您只生成LLVM bytcode,但如果需要的話,通常不會直接執行LLVM字節碼,如Java運行時運行的Java字節碼。至於ARM的交叉編譯,我不確定它如何與swiftc工具一起工作,但是如果你構建一個Xcode iOS項目,它將生成一個ARM可執行文件。我確信swiftc編譯器具有生成ARM可執行文件所需的所有選項。然而,我能想到的一個問題是,Swift的許多功能取決於Apple的框架。不過,現在Swift已經開源了,各種各樣的東西逐漸會有更多純粹的快速庫。

+1

大部分對蘋果框架的依賴都消失了,Foundation已經很快被重新實現,並且也是開源的。 –

+0

Swift需要Objective-C運行時,它在嵌入式環境中相當大(根據[this person](至少600KB)(http://xmaker.mx/archives/14),Objective-C運行於SiLabs Cortex -M4)。如果你有外部存儲器燒錄,那麼這不是一個問題。 –

+0

@TonyK www.swift.org,swift不再依賴於目標c。它已經開源 –

0

我在探索這種可能性(使用Swift嵌入式應用程序)。由於Swift需要一個運行時,靜態編譯「Hello,World!」之後(在Ubuntu上,使用最新的Swift 3.0.2的x86-64)結果二進制大小超過5兆字節,這可能是「小」ARM控制器(如Cortex-M0)的問題。