1

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

同样,“便携式”是用来表示这一点的术语吗?

4

1 回答 1

7

LLVM是一种编译器基础结构,它解析 C++ 代码,将其转换为一种称为 LLVM IR(IR 代表中间表示)的中间语言,它看起来像高级汇编语言。它是一种独立于机器的语言。产生 IR 是一个阶段。在下一阶段,它通过各种优化器(称为pass)。然后到达发出机器代码(即机器相关代码)的第三阶段。

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

所以你可以生成 IR,然后在运行时做剩下的事情?我自己没有这样做,但 LLVM 似乎很有希望。

这是 LLVM IR 的文档:

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

  • LLVM 优势:
    • JIT - 您可以动态编译和运行代码。

这些文章很好读:

于 2012-06-26T06:19:45.553 回答