0

我想开发一个基于程序结构在程序中执行某些优化的工具。例如,假设我想在一个循环中识别 if-else,我的工具会将其重写为两个循环。我希望该工具能够使用多种语言重写程序,例如 Java、C++、Python、Javascript 等。

我正在探索是否可以将 GraalVM 用于此目的,以充当我可以为各种语言实现相同优化的通用平台。

GraalVM 是否具有通用的中间表示(类似于 LLVM IR)?我查看了文档,但不确定从哪里开始。任何指针?

注意:我不是在寻找语言之间的互操作性。您可以假设我要重写的程序是用一种语言编写的;不同程序的语言可能不同。

4

1 回答 1

1

GraalVM 有两个与此相关的组件:

  • 编译器,将 Java 字节码编译为本机代码
  • truffle,这是一个在 GraalVM 之上实现其他编程语言的框架。

使用 Truffle 框架实现的语言被部分评估为 Java 字节码,然后由 Graal 编译器编译。这篇文章/谈话提供了更多细节,包括 Graal 编译器使用的 IR:https ://chrisseaton.com/truffleruby/jokerconf17/ 。根据您的具体用例,您可能希望连接到 Truffle、Truffle 部分评估器或 Graal 编译器。

于 2019-05-15T14:47:16.360 回答