【问题标题】:Intermediate language used in scalac?scalac中使用的中间语言?
【发布时间】:2014-01-18 18:39:29
【问题描述】:

在GCC compilerwe see几个'intermediate languages':RTL,GENERIC and GIMPLE。

This answer hints 在scalac 中的中间表示的想法。

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

假设:

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

【问题讨论】:

标签: scala intermediate-language scala-compiler


【解决方案1】:

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

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

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

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

【讨论】:

    【解决方案2】:

    也许这会对你有所帮助:

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

    或此页面:

    www.scala-lang.org/node/6372‎

    【讨论】:

      【解决方案3】:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2011-09-14
        • 2016-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多