我使用C語言編寫的軟件可以運行在具有不同體系結構(ARMv5,ARMv6)的各種ARM處理器上。我們目前使用幾個不同版本的RVDS編譯我們的代碼,但我們正在考慮用LLVM編譯一些代碼以添加一些自定義工具。LLVM支持哪些ARM體系結構?
我知道LLVM有ARM和Thumb目標,但它支持哪些體系結構,具體是什麼? LLVM生成的代碼是否可以在ARMv5上運行?我應該注意什麼限制?
我使用C語言編寫的軟件可以運行在具有不同體系結構(ARMv5,ARMv6)的各種ARM處理器上。我們目前使用幾個不同版本的RVDS編譯我們的代碼,但我們正在考慮用LLVM編譯一些代碼以添加一些自定義工具。LLVM支持哪些ARM體系結構?
我知道LLVM有ARM和Thumb目標,但它支持哪些體系結構,具體是什麼? LLVM生成的代碼是否可以在ARMv5上運行?我應該注意什麼限制?
他們source code列出了以下archs:
// ARM architectures.
def ArchV4T : SubtargetFeature<"v4t", "ARMArchVersion", "V4T", "ARM v4T">;
def ArchV5T : SubtargetFeature<"v5t", "ARMArchVersion", "V5T", "ARM v5T">;
def ArchV5TE : SubtargetFeature<"v5te", "ARMArchVersion", "V5TE", "ARM v5TE, v5TEj, v5TExp">;
def ArchV6 : SubtargetFeature<"v6", "ARMArchVersion", "V6", "ARM v6">;
def ArchV6M : SubtargetFeature<"v6m", "ARMArchVersion", "V6M", "ARM v6m", [FeatureNoARM, FeatureDB]>;
def ArchV6T2 : SubtargetFeature<"v6t2", "ARMArchVersion", "V6T2", "ARM v6t2", [FeatureThumb2]>;
def ArchV7A : SubtargetFeature<"v7a", "ARMArchVersion", "V7A", "ARM v7A", [FeatureThumb2, FeatureNEON, FeatureDB]>;
def ArchV7M : SubtargetFeature<"v7m", "ARMArchVersion", "V7M", "ARM v7M", [FeatureThumb2, FeatureNoARM, FeatureDB, FeatureHWDiv]>;
我已經在ARMv4和ARMv6上運行了llvm生成的代碼。我有一些ARMv5平臺,但不記得是否在那裏嘗試過。我假設通用-march = arm的輸出會給出最小公分母(ARMv4)代碼,這意味着它將在ARMv5上運行。這是所有嵌入式的,沒有操作系統類型工作介意你,我沒有使用llvm來創建arm linux二進制文件或類似的東西。
這是很好的有一個權威的排行榜是這樣。不過,很難知道每個架構的穩定程度。 – 2010-12-08 20:39:57