LLVM汇编语言的稳定性如何?

Tob*_*ias 5 assembly llvm intermediate-language

LLVM语言参考指出,它可用于

作为磁盘上的bitcode表示(适合Just-In-Time编译器的快速加载)

这种表现有多稳定?例如,我现在可以使用LLVM 3.1生成它,并且仍然期望它可以使用未来的LLVM,比如三年假设的LLVM 4.5吗?

假设我没有外部依赖项,我可以使用它为不同的架构生成二进制文件吗?

Eli*_*sky 8

回答你的第一个问题:不.它不稳定.不,你不能指望由3.1生成的IR/bitcode在4.5中可读 - LLVM项目明确地没有做出这种保证,牺牲了向后兼容性,有利于更快地向前推进,创建更好的优化和工具,以及重构根据需要构建框架的一部分.LLVM主要针对静态,提前(AOT)编译器,因此这种方法对大型玩家有意义.

第二个问题我不太懂.LLVM具有许多体系结构的目标(后端),并且适用于大多数流行的体系结构.但同样,他们的输入是IR,可能会在发布之间发生变化.另外请务必阅读:http://llvm.org/docs/FAQ.html#can-i-compile-c-or-c-code-to-platform-independent-llvm-bitcode,以及"目标"依赖"这里的部分:https://llvm.org/docs/tutorial/LangImpl10.html

问题在于,当询问LLVM平台独立性时,许多人会问"从我的C代码编译的LLVM IR是否会独立于目标?".答案是否定的,因为C本身是目标依赖的.