python字节码解释器实现

时间:2017-04-26 08:07:31

标签: python bytecode

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

我在这个功能中遇到了问题:

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

到底是什么dis.HACE_ARGUMENT?因为它是一个很大的功能,我认为不要在这里发布,而是给它链接。如果它需要让我知道

1 个答案:

答案 0 :(得分:0)

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

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

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

请注意,因为根据我上面链接的文档,这在Python 3.6中略有改变

相关问题