libgccjit: как прикрутить JIT к игрушечному интерпретатору
В документации GCC есть туториал, где стековый интерпретатор байткода компилируется в машинный код. Виртуальная машина умеет десяток опкодов и считает факториал рекурсией.
Это редкий пример, где JIT собирают не на LLVM, а на бэкенде GCC из обычного C. Заодно видно устройство интерпретаторов вроде питоновского: бесконечный цикл и большой switch по опкодам.
Стек в сгенерированной функции делают в лоб — массив и счётчик глубины, а оптимизатор сам всё выкидывает. Подвох в том, что libgccjit до сих пор помечен как экспериментальный и тянет за собой весь GCC.
🔗 Подробнее
@nuancesprog #Languages #C

2August 26, 2026 2.2K 4