Hacker News Digest

14 октября 2025 г. в 05:14 • transactional.blog • ⭐ 97 • 💬 16

OriginalHN

Copy-and-Patch: A Copy-and-Patch Tutorial

Copy-and-Patch — это метод создания базовых JIT-компиляторов, позволяющий чрезвычайно быстро компилировать фрагменты кода во время выполнения. Техника не требует глубоких знаний ассемблера, легко поддерживается и генерирует нативный код сопоставимого качества с традиционными JIT. Подход основан на использовании "шаблонов" — минимальных C-функций, компилируемых в конкатенируемые фрагменты нативного кода.

Процесс работы с шаблонами включает компиляцию C-кода в нативный, извлечение фрагментов и создание функций для их копирования и патчинга. В примере создается JIT для функции int add_a_b(int a, int b), специализируемой во время выполнения для вычисления 1 + 2. Каждая операция (загрузка константы, сложение, возврат) реализуется как отдельный шаблон с "дырами" для последующего патчинга адресов и констант.