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
中略有变化
我正在学习一个教程 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
中略有变化