3

GCC 编译器 中,我们看到了几种“中间语言”:RTLGENERIC 和 GIMPLE

这个答案暗示了 中的中间表示的想法scalac

我的问题是:Scala 中是否存在编译器的“中间表示”?有这方面的文件吗?

假设:

  • 我不是指 JVM 字节码。我的意思是上面的抽象级别。
4

3 回答 3

3

最接近的等价物是 scalac 使用的 icode 和 bcode,请在 Scalac 优化器上查看 Miguel Garcia 的网站以获取更多信息,此处:http ://magarciaepfl.github.io/scala/

考虑到字节码是 scalac 的最终输出,您可能还认为 Java 字节码本身是您的中间表示。

或者也许真正的中间体是 JIT 在最终输出本机指令之前产生的东西?

但最终……没有一个地方可以指出“中间存在!”。Scalac 在不断改变抽象语法树的阶段工作,每个阶段都会产生一个新的中间体。整个事情就像一个洋葱,很难尝试挑选出比其他任何一层都更重要的一层。

于 2013-12-31T23:02:30.063 回答
1

也许这会帮助你:

http://lampwww.epfl.ch/~paltherr/phd/altherr-phd.pdf

或此页面:

www.scala-lang.org/node/6372‎</p>

于 2013-12-31T22:56:46.173 回答
0

根据 Iulian Dragos 的论文,后端使用称为 icode 的中间表示。你可以在这里阅读更多关于它的信息http://infoscience.epfl.ch/record/150270/files/EPFL_TH4820.pdf第 34 页。

于 2015-07-03T22:09:47.150 回答