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