III

位元組碼虛擬機

我們的 Java 直譯器 jlox 教會了我們許多程式語言的基本概念,但我們還有很多東西要學習。首先,如果你在 jlox 中執行任何有趣的 Lox 程式,你會發現它慢得令人痛苦。它使用的直譯風格直接走訪 AST對於某些現實世界的應用來說已經足夠好,但對於通用腳本語言來說,還有許多不足之處。

此外,我們隱式地依賴 JVM 本身的執行時功能。我們理所當然地認為 Java 中的 instanceof 之類的東西以某種方式工作。我們也從不擔心記憶體管理,因為 JVM 的垃圾回收器會為我們處理這些。

當我們專注於高階概念時,略過這些是沒問題的。但既然我們已經熟悉了直譯器,現在是深入到這些底層並使用 C 標準函式庫從頭開始構建我們自己的虛擬機的時候了 . . .