scalac 中使用的中间语言



在GCC编译器中,我们看到几种"中间语言":RTL,GENERIC 和GIMPLE。

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

我的问题是:在 Scala 中是否有编译器的"中间表示"?是否有任何文档?

假设:

  • 我不是指 JVM 字节码。我的意思是高于此的抽象级别。

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

你也可以认为Java字节码本身是你的中间表示,因为字节码是scalac的最终输出。

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

不过最终...没有一个地方可以指向"中间人! Scalac分阶段工作,连续改变抽象语法树,每个阶段都会产生一个新的中间体。 整个事情就像洋葱一样,很难尝试挑选出某一层比其他任何一层都更重要。

也许这会帮助你:

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

或此页面:

www.scala-lang.org/node/6372

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

相关内容

  • 没有找到相关文章

最新更新