如何获得python操作码的大小

时间:2018-06-11 21:40:45

标签: python opcode

我正在解析python字节码(co_code)。对于某些操作,我想知道python操作码的长度(以字节为单位)。我在哪里可以找到python操作码的长度?

2 个答案:

答案 0 :(得分:2)

所有CPython字节码操作码都是1个字节长。在CPython 3.6+上,所有操作码另外采用1字节参数,每条指令总共2个字节。在以前的版本中,小于特殊值HAVE_ARGUMENT的操作码不带参数,大于该值的操作码采用2字节参数,每条指令总共1或3个字节。

答案 1 :(得分:0)

像这样的简单功能可能会有所帮助:

def compute_size(opcode):
    if sys.version_info >= (3, 6):
        return 2
    return (1, 3)[opcode < dis.HAVE_ARGUMENT]