III

字节码虚拟机

我们的 Java 解释器 jlox 教会了我们很多关于编程语言的基本知识,但我们还有很多东西要学。首先,如果你在 jlox 中运行任何有趣的 Lox 程序,你会发现它慢得令人痛苦。它使用的解释风格直接遍历 AST对于某些实际应用来说足够好了,但对于通用脚本语言来说还远远不够。

此外,我们还隐式地依赖于 JVM 本身的运行时特性。我们理所当然地认为 Java 中像instanceof这样的东西某种程度上是有效的。我们从未担心内存管理,因为 JVM 的垃圾收集器为我们处理了这一切。

当我们专注于高级概念时,忽略这些是可以的。但现在我们已经了解了解释器的运作方式,是时候深入到这些底层,使用 C 标准库以外的东西从头开始构建自己的虚拟机 . . .