python - python dis 输出中的 >> 是什么?

标签 python disassembly

我有以下代码

code = '''
    x = ['a','b','c']
    for each in x:
        print(each)
    '''

我使用了python的dis包的dis函数得到了如下输出

dis.dis(code)

>   2           0 LOAD_CONST               0 ('a')
>               2 LOAD_CONST               1 ('b')
>               4 LOAD_CONST               2 ('c')
>               6 BUILD_LIST               3
>               8 STORE_NAME               0 (x)
> 
>   3          10 SETUP_LOOP              20 (to 32)
>              12 LOAD_NAME                0 (x)
>              14 GET_ITER
>         >>   16 FOR_ITER                12 (to 30)
>              18 STORE_NAME               1 (each)
> 
>   4          20 LOAD_NAME                2 (print)
>              22 LOAD_NAME                1 (each)
>              24 CALL_FUNCTION            1
>              26 POP_TOP
>              28 JUMP_ABSOLUTE           16
>         >>   30 POP_BLOCK
>         >>   32 LOAD_CONST               3 (None)
>              34 RETURN_VALUE

我想知道 >>> 在此输出中的意义是什么。它正在为 FOR_ITERPOP_BLOCKLOAD_CONST 打印。

最佳答案

如果您查找字节偏移量,您会发现每个标记行都是跳转或其他分支操作的对象。它应该可以帮助您更轻松地识别循环范围等。

关于python - python dis 输出中的 >> 是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57120405/

相关文章:

Python **kwargs 和 self 作为参数

debugging - 如何让gdb一起打印两个源代码对应的反汇编代码?

directx - 逆向工程和修补 DirectX 游戏?

assembly - 如何反汇编 fasm 生成的二进制文件?

python - 仅从另一个数据框中的不匹配列在一个数据框中创建列,并将所有值设置为 0

python - 使用 python 和 scrapy 删除第一个标签 html

Python3字典基于值的合并

Python - 在函数内部定义常量

disassembly - 如何理解 Mach-O 符号表

linux-kernel - 为 Linux 内核二进制文件构建完整的控制流程图