Lua为什么设计为生成中间操作码?

问题描述 投票:8回答:2

我正在阅读Lua的源代码,令人惊讶地发现它的实现是为了生成一些奇怪的指令(例如GETUPVAL,FORLOOP等),然后这些操作码由虚拟机执行。与基于AST的纯解释器相比,这样做有什么好处?

谢谢。

lua vm-implementation
2个回答
11
投票

10
投票
Lua自诞生以来就一直使用虚拟机,并在Lua 5.0中引入了基于寄存器的虚拟机(这是第一个被广泛使用的基于寄存器的虚拟机。)The Evolution of Lua,由作者撰写Lua,提供了有关该主题的大量资源。

由Lua的作者撰写的另一篇论文,The Implementation of Lua 5.0提供了许多有关实现的详细信息,第7章

虚拟机

对您特别有帮助,该论文对于阅读Lua的源代码也有很好的参考作用。 。
© www.soinside.com 2019 - 2024. All rights reserved.