Я просмотрел детали реализации PyPy, а также исходный код, но Путь выполнения PyPy мне до сих пор не совсем ясен.
Иногда создается байт-код, иногда он пропускается для немедленной компиляции машинного кода (код уровня интерпретатора/уровня приложения), но я не могу понять, когда и где именно создается машинный код, который передается ОС для двоичного выполнения. через низкоуровневые инструкции (RAM/CPU).
Мне удалось это понять в случае CPython, поскольку в ceval.c
есть гигантский переключатель, который уже скомпилирован, который интерпретирует байт-код и запускает соответствующий код (на самом деле на C). Имеет смысл.
Но что касается PyPy, мне не удалось получить четкое представление о том, как это делается, в частности (я не хочу вдаваться в различные детали оптимизации PyPy, я этим не занимаюсь). после здесь).
Я был бы удовлетворен ответом, указывающим на исходный код PYPY, поэтому, чтобы избежать слухов и иметь возможность увидеть его своими глазами (я заметил часть бэкэнда JIT в /rpython с различными сборщиками архитектур ЦП)