gpt4 book ai didi

c - 用于解释器的基于堆栈的 VM 的替代方案

转载 作者:行者123 更新时间:2023-12-02 00:00:08 27 4
gpt4 key购买 nike

在为另一种语言构建解释器时,通常建议创建一个基于堆栈的虚拟机,该虚拟机可以解释实际解释器生成的字节码。解释器将由两部分组成:翻译器,将高级语言的指令转换为虚拟机的字节码,以及虚拟机本身。

我的问题是:解释型语言有哪些替代方案?例如,是否可以(并且实用)跳过虚拟机,并使用 C 中的函数实现所有指令?在某种程度上,在我看来这应该是可能的,但也许您最终还是会实现某种最小的 VM 以实现更复杂的功能。还有其他选择吗?

最佳答案

建议制作一个基于堆栈的虚拟机,因为它们制作起来很简单。

另一种常见类型的 VM 是基于寄存器的,其中值存储在寄存器中而不是堆栈中。

还有许多其他解释器和虚拟机变体。您可以拥有一个生成解析树的编译器和一个解释这些树的解释器(但如果它是使用递归函数实现的,则可以说它仍然是一个基于堆栈的 VM)。


让编译器生成另一种语言的代码而不是生成某种机器代码(对于 VM 或真实机器)的情况并不少见。 C 是这些类型的编译器的通用目标语言,因为 C 语言及其编译器无处不在。但是你不再有 VM 或解释器,你只有一个编译器/翻译器。

关于c - 用于解释器的基于堆栈的 VM 的替代方案,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21908469/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com