Алгоритм построения машинного кода для выполнения программы включает несколько этапов: 2
- Пропуск через текстовый препроцессор. 2 Его задача — найти в программе все директивы (указания) и выполнить их. 2 В результате исходный текст программы несколько меняется. 2
- Подача на компилятор. 2 Преобразованные тексты подаются на компилятор, который сначала проводит лексический анализ программы. 2 На этом этапе выделяются возможные синтаксические ошибки. 2 Если ошибок не обнаружено, то программа далее переводится непосредственно в машинные коды. 2
- Получение объектных файлов модулей. 2 В них отсутствуют связи с другими модулями, реализации библиотечных функций и код запуска всей программы. 2
- Работа линкера. 2 Он связывает все объектные файлы модулей в единый исполняемый файл, добавляет в него необходимые реализации библиотечных функций и код запуска для текущей операционной системы. 2 На выходе получается окончательный результат в виде исполняемого файла. 2
Также существует технология компиляции времени исполнения (JIT-компиляция). 1 В этом случае в программу включается мини-компилятор, генерирующий необходимый код. 1 Часто используемые участки кода преобразуются в машинные команды, что позволяет повысить производительность. 1