python 字节码解释器实现

python bytecode interpreter implementation

我正在学习一个教程 here,它是关于实现一个简单的基于堆栈的 python 字节码解释器。

我在这个函数中遇到了问题:

def parse_byte_and_args(self):
    .........
    if byteCode >= dis.HAVE_ARGUMENT: #<-----------------------this part

dis.HACE_ARGUMENT 到底是什么?因为它是一个很大的功能,所以我想不 post 它在这里而是给 link 到 it.if 它需要让我知道

在您正在定义的函数的上下文中,您正在尝试处理可能有也可能没有与之关联的参数的操作码(指令)。

如果您查看 Python disassembler documentation for HAVE_ARGUMENT,您会发现 dis.HAVE_ARGUMENT 正是用于此目的。

也就是说,如果字节码 >= dis.HAVE_ARGUMENT,操作码有参数,你需要弄清楚如何处理它们。否则,操作码没有参数,也不需要额外的处理。

注意,因为根据我上面链接的文档,这在 Python 3.6

中略有变化