Scala编译器中间代码规范

Specification of Scala compiler's intermediate code

Scala 编译器生成的中间代码(即将 -Xprint-icode 选项传递给 scalac)是否有正式规范或详细描述?

谢谢。

icode 格式正在消失,引入了新的 GenBCode 后端,它直接从 scalac Trees 到 ASM 的字节码表示。如果我是你,我不会花时间去学习它。

相反,我建议您在 cleanup 之后打印(-Xprint:cleanup),这是后端之前的最后一个阶段,使用 scalac 树,这很容易理解,因为它们基本上是Java 使用 Scala 语法的代码。

就是说,如果您坚持要处理 icode,我认为没有任何关于它的真实文档。但是它和JVM字节码几乎是一一对应的:它有类、字段和方法。在方法内部,有一个基于堆栈的指令集。

在此处查找 icode 文档(第 35 页): http://infoscience.epfl.ch/record/150270/files/EPFL_TH4820.pdf