C++ Native to Intermediate

Mak*_*bex 1 c++

理论上和/或实际上是否可以将本机c ++编译成某种中间语言,然后在运行时编译?

沿着同样的路线,"便携式"这个术语用来表示这个吗?

Naw*_*waz 7

LLVM其是基础设施的编译器分析C++代码,将其转化为称为LLVM IR的中间语言(IR代表中间表示),它看起来像高级别汇编语言.它是一种与机器无关的语言.生成IR是一个阶段.在下一阶段,它会通过各种优化器(称为pass).然后到达第三阶段,发出机器代码(即机器相关代码).

这是一个基于模块的设计; 一相(模块)的输出成为另一相的输入.您可以在磁盘上保存IR,以便以后可以在完全不同的计算机上恢复剩余的阶段!

那么您可以生成IR然后在运行时执行其他操作吗?我自己并没有这样做,但LLVM似乎真的很有前途.

以下是LLVM IR的文档:

Stackoverlow上的这个主题似乎很有趣,正如它所说的那样,

  • LLVM的优点:
    • JIT - 您可以动态编译和运行代码.

这些文章很好读:

  • 顺便说一下,他们计划将LLVM IR用于Android应用,因此一旦从市场上下载,应用程序就会在设备上编译成本机代码,这样应用创建者就不必为每个支持的设备构建它. (2认同)