Залежь
Исходный код программы в файловой системе (текстовые файлы)
* Замачивание
Препроцессинг: обработка макросов, включение файлов, условная компиляция
Взвесь
Текст после препроцессинга, очищенный от макросов и директив
* Обогащение
Лексический анализ + синтаксический анализ (построение AST без типов)
Глина
Абстрактное синтаксическое дерево (AST) без типов
* Замешивание
Семантический анализ: проверка типов, разрешение имён, привязка семантических атрибутов
Раствор
AST с типами и семантическими атрибутами
* Лепка
Высокоуровневые оптимизации на AST (анализ потока, удаление недостижимого кода, свёртка констант)
Сырец
AST после высокоуровневых оптимизаций
* Просушка
Подготовка AST к генерации кода (преобразования, не меняющие сути, но упрощающие дальнейшие этапы)
Заготовка
Промежуточное представление, готовое к генерации машинного кода
* Обжиг
Преобразование заготовки в машинный код; результатом является множество функций (кирпичей)
Кирпич
Машинный код одной функции
* Упаковка
Сборка кирпичей в объектный модуль (пачку) с таблицей символов (экспорт/импорт)
Пачка
Объектный модуль, готовый к линковке (объектный файл или библиотека)
* Кладка
Линковка пачек в исполняемый файл (здание)
Аналогия компиляции со строительством
Страница: 1
Сообщений 1 страница 1 из 1
Поделиться12026-03-11 09:38:21
Страница: 1