Python Virtual Machine and Bytecode
Simple program “hello.py”:
x = 10
y = 20
z = (x + y) / (y - x)
print(f"z={z}\n")
Disassembling the program:
python3 -m dis hello.py
0 0 RESUME 0
1 2 LOAD_CONST 0 (10)
4 STORE_NAME 0 (x)
2 6 LOAD_CONST 1 (20)
8 STORE_NAME 1 (y)
3 10 LOAD_NAME 0 (x)
12 LOAD_NAME 1 (y)
14 BINARY_OP 0 (+)
18 LOAD_NAME 1 (y)
20 LOAD_NAME 0 (x)
22 BINARY_OP 10 (-)
26 BINARY_OP 11 (/)
30 STORE_NAME 2 (z)
4 32 PUSH_NULL
34 LOAD_NAME 3 (print)
36 LOAD_CONST 2 ('z=')
38 LOAD_NAME 2 (z)
40 FORMAT_VALUE 0
42 LOAD_CONST 3 ('\n')
44 BUILD_STRING 3
46 PRECALL 1
50 CALL 1
60 POP_TOP
62 LOAD_CONST 4 (None)
64 RETURN_VALUE
Running the program:
python3 hello.py
z=3.0