Я хочу понять, как работает интерпретатор Python. Я понимаю процесс генерации кода операции и хочу лучше понять часть интерпретатора. Для этого я много читал в Интернете и узнал о цикле for (;;)
в файле ceval.c
в интерпретаторе Python (Cpython).
Теперь я хочу интерпретировать следующий код Python a.py
:
a = 4
b = 5
c = a + b
когда я делаю python -m dis a.py
1 0 LOAD_CONST 0 (4)
2 STORE_NAME 0 (a)
2 4 LOAD_CONST 1 (5)
6 STORE_NAME 1 (b)
3 8 LOAD_NAME 0 (a)
10 LOAD_NAME 1 (b)
12 BINARY_ADD
14 STORE_NAME 2 (c)
16 LOAD_CONST 2 (None)
18 RETURN_VALUE
Теперь я поставил точку отладки в switch(opcode)
строку в ceval.c
. И теперь, когда я запускаю отладчик, он приходит в это положение более 2000 раз. Я думаю, это потому, что перед запуском python также должен выполнять некоторые другие интерпретации. Итак, мой вопрос: как мне отлаживать только соответствующие инструкции кодов операций?
В принципе, как я узнаю, что инструкция, которую я отлаживаю, на самом деле из программы, которую я создал?
Пожалуйста, помогите мне с тем же. Заранее спасибо.