我正在关注一个教程here,它是关于实现一个简单的基于堆栈的python字节码解释器。
我在这个功能中遇到了问题:
def parse_byte_and_args(self):
.........
if byteCode >= dis.HAVE_ARGUMENT: #<-----------------------this part
到底是什么dis.HACE_ARGUMENT
?因为它是一个很大的功能,我认为不要在这里发布,而是给它链接。如果它需要让我知道
答案 0 :(得分:0)
在您定义的函数的上下文中,您正在尝试处理操作码(指令),该操作码可能有也可能没有与之关联的参数。
如果您查看Python disassembler documentation for HAVE_ARGUMENT,就会发现dis.HAVE_ARGUMENT完全用于此目的。
也就是说,如果byteCode&gt; = dis.HAVE_ARGUMENT,操作码有参数,你需要弄清楚如何处理它们。否则,操作码没有参数,也不需要额外的处理。
请注意,因为根据我上面链接的文档,这在Python 3.6中略有改变