Меня интересуют популярные и широко используемые компиляторы, такие как gcc. Но если все будет по-другому с разными компиляторами, я тоже хотел бы это знать.
Взяв gcc в качестве примера, он компилирует короткую программу, написанную на C, непосредственно в машинный код, или он сначала переводит ее на удобочитаемую сборку, а затем использует ассемблер (встроенный?) для перевода программа сборки в двоичный, машинный код - ряд инструкций для CPU?
Использует ли код сборки для создания бинарного исполняемого файла значительно дорогой операции? Или это относительно простая и быстрая работа?
(Предположим, что мы имеем дело только с семейством процессоров x86, а все программы написаны для Linux.)
Я был бы очень благодарен за любую помощь и подумал по этому поводу. Спасибо!