我正在使用自己的玩具编程语言。现在,我正在解释AST的源语言,并且想知道编译为字节码然后解释它可以为我带来什么好处。

现在,我要记住三件事:


遍历语法树数百次可能比在数组中运行指令要慢,尤其是在数组支持O(1)随机访问(即,向上和向下跳跃10条指令)的情况下。
在类型化执行环境中,由于AST是类型化的,所以我会花费一些运行时间,并且我一直在遍历它(即,我有10种类型的节点,我需要检查我现在要执行哪种类型)。也许编译为无类型的字节码可以帮助改善这一点,因为在进行类型检查和编译之后,我将拥有无类型的值和代码。
编译为字节码可以提供更好的可移植性。


我的观点正确吗?编译为字节码的背后还有哪些其他动机?

最佳答案

速度是主要原因;在实践中解释AST太慢了。

使用字节码的另一个原因是它可以被简单地序列化(存储在磁盘上),以便您可以分发它。这就是Java所做的。

关于interpreter - 编译为字节码的背后动机是什么?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/11433579/

10-13 05:58
查看更多