Инициализация не генерируется компилятором c, она является частью библиотеки c (что облегчает адаптацию для каждой ОС / процессора).
Данный код обычно очень прост в системах Windows / Unixy - обычно выполняет небольшую инициализацию библиотеки (открывает STDIN, STDOUT, STDERR, устанавливает часовой пояс и т. Д.), Настраивает среду, обрабатывает командную строку для передачи в main ; перехватывает возврат из main (), вызывает выход и т. д.
Код запуска в большинстве библиотек c находится в файле с именем crt0.c, crt1.c или чем-то похожим (crt = время выполнения c).
В более примитивных или «голых» системах он также настроит стек и другие регистры и очистит область данных BSS - в этом случае это часто будет в ассемблере (обычно crt0.S).
Вот ссылка на код запуска BSD c - текст ссылки
А код запуска для Mingw для Windows находится здесь в crt1.c - http://mingw.cvs.sourceforge.net/viewvc/mingw/runtime/