View on GitHub

Computer Architecture and Operating Systems

Course taught at Faculty of Computer Science of Higher School of Economics

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

References