我如何组装Python 3字节码?

问题描述 投票:1回答:1

我可以轻松获得Python 3字节码的文本表示形式,

def foo():
  print("Hello world!")

import dis
dis.dis(foo)
2           0 LOAD_GLOBAL              0 (print)
            2 LOAD_CONST               1 ('Hello World!')
            4 CALL_FUNCTION            1
            6 POP_TOP
            8 LOAD_CONST               0 (None)
           10 RETURN_VALUE

但是我该怎么做相反。像我将如何运行它。

2           0 LOAD_GLOBAL              0 (print)
            2 LOAD_CONST               1 ('World says Hello!')
            4 CALL_FUNCTION            1
            6 POP_TOP
            8 LOAD_CONST               0 (None)
           10 RETURN_VALUE

注意,我们在第2行的LOAD_CONST中加载了另一个值。

我可以很容易地获得Python 3字节码的文本表示形式,def foo():print(“ Hello world!”)import dis dis.dis(foo)2 0 LOAD_GLOBAL 0(print)2 LOAD_CONST ...

python-3.x bytecode
1个回答
0
投票

请参见xasm。您可以忽略以下事实:它处理的Python版本不是您正在运行的版本。

xdis --asm中的[xdis]对于以正确的格式获取文件(从现有的字节码文件开始)很有用。

© www.soinside.com 2019 - 2024. All rights reserved.