'的含义&燃气轮机&燃气轮机';在Python字节码中
我已经反汇编了以下python代码'的含义&燃气轮机&燃气轮机';在Python字节码中,python,virtual-machine,bytecode,Python,Virtual Machine,Bytecode,我已经反汇编了以下python代码 def factorial(n): if n <= 1: return 1 elif n == 2: return 2 elif n ==4: print('hi') return n * 2 def阶乘(n): 如果n 16加载速度为0(n) 19荷载常数2(2) 22比较运算2(=) 25如果为假,则弹出跳转32 5 28荷载常数2(2) 31返回值 6>>32加载速度
def factorial(n):
if n <= 1:
return 1
elif n == 2:
return 2
elif n ==4:
print('hi')
return n * 2
def阶乘(n):
如果n 16加载速度为0(n)
19荷载常数2(2)
22比较运算2(=)
25如果为假,则弹出跳转32
5 28荷载常数2(2)
31返回值
6>>32加载速度0(n)
35荷载常数3(4)
38比较运算2(=)
41如果为假,则弹出跳转52
7 44负载常数4(“高”)
47打印项目
48打印新行
49向前跳0(到52)
8>>52加载速度0(n)
55荷载常数2(2)
58二进制乘法
59返回值
上面字节码中的“>>”符号代表什么?它们是跳转目标;满足条件时,字节码跳转到前面的位置 第一跳:
9 POP_JUMP_IF_FALSE 16
跳转到偏移量16,因此在偏移量16处,输出有一个目标>
:
4 >> 16 LOAD_FAST 0 (n)
从每列的名称中:
[……]
>
表示如果为FALSE,则看起来像是弹出跳转的目标。请参阅本文:@self:No,右移是
BINARY\u RSHIFT
或INPLACE\u RSHIFT
。
4 >> 16 LOAD_FAST 0 (n)