在GCC compiler we see多个“intermediate languages”中:RTL,GENERIC and GIMPLE。
This answer hints关于scalac
中的中间表示的想法。
我的问题是:在Scala中是否存在编译器的“中间表示”?有没有这方面的文件?
假设:
答案 0 :(得分:3)
最接近的等价物是scalac使用的icode和bcode,查看Miguel Garcia在Scalac优化器上的网站了解更多信息,请点击此处:http://magarciaepfl.github.io/scala/
考虑到字节码是scalac的最终输出,您可能还会认为Java字节码本身是您的中间表示。
或许 true 中间体是JIT在最终输出本机指令之前产生的东西?
最终......虽然没有一个地方可以指出“那里有中间人!”。 Scalac分阶段工作,连续改变抽象语法树,每个阶段产生一个新的中间。整个过程就像一个洋葱,很难尝试挑出一层,因为它比其他任何层都更重要。
答案 1 :(得分:1)
答案 2 :(得分:0)
根据Iulian Dragos的论文,后端使用称为icode的中间表示。您可以在此处阅读更多相关信息http://infoscience.epfl.ch/record/150270/files/EPFL_TH4820.pdf,第34页。