我是 C 的初学者(多一点)程序员。我对虚拟机领域非常感兴趣——JVM、Google V8、Erlang VM、PyPy 等。
我的问题是:
- 为了能够构建虚拟机,我需要了解/学习哪些东西(语言、概念、算法、数学等)?
- 任何有帮助的书籍或其他资源
我是 C 的初学者(多一点)程序员。我对虚拟机领域非常感兴趣——JVM、Google V8、Erlang VM、PyPy 等。
我的问题是:
这个话题本身并不容易。
首先,您需要了解一些有关解析的知识。因为您将必须学习如何解析和运行语言。在大多数情况下,它会像 C# 的 MIL 一样简单。
首先要阅读的是 SCIP“计算机程序的结构和解释,第二版”这本书提供了有关构建语言解释器时所需主题的知识。这是你必须开始的基础。
接下来是硬核:
1) Dragon Book:“编译器:原理、技术和工具(第 2 版)”Aho、Seti、Ullman
2) “编译器设计:虚拟机” Reinhard Wilhelm、Helmut Seidl
3)《反编译Java》Godfrey Nolan
就个人而言,我从来没有时间阅读第三个。根据我自己的经验,我知道你必须牺牲很多时间才能制作出一些半体面的东西。
祝你好运