Scala编译器生成的中间代码是否有任何正式的规范或详细描述(-Xprint-icode
即将选项传递给scalac)?
谢谢。
icode 格式正在消失,引入了新的GenBCode
后端,它直接从 scalac Tree
s 到 ASM 的字节码表示。如果我是你,我不会花时间去学习它。
相反,我建议您在cleanup
( -Xprint:cleanup
) 之后打印,这是后端之前的最后一个阶段,使用 scalac 树,它们非常容易理解,因为它们基本上是具有 Scala 语法的 Java 代码。
也就是说,如果您坚持要处理icode
,我认为没有任何关于它的真实文档。但它几乎与 JVM 字节码是一一对应的:它有类、字段和方法。在方法内部,有一个基于堆栈的指令集。
在此处查找 icode 的文档(第 35 页):http: //infoscience.epfl.ch/record/150270/files/EPFL_TH4820.pdf