Другие языки программирования и технологии

Что происходит при запуске экзешного файла?

Программа написана на C++.
Я так понимаю происходит следующее:
1.После двойного клика мышкой по исполняемому файлу происходит препроцессорная обработка.
2. Компиляция.
3. Компоновка
4. Загрузка программы в ОЗУ и её выполнение центральным процессорным устройством.

Я хочу узнать, происходят ли постоянно процессы 1-3 или в файле программы после компилирования сохраняются машинные кода и непосредственно выполняется процесс загрузки и выполнения?
Двойной клик.... Хм, ну, допустим, у на windows.
После двойного клика по файлу в проводнике.. .
1. Проводник вызывает системную функцию открытия файла.
2. Эта функция вызывает функцию создания процесса.
3. Последняя функция открывает .ехе файл, читает заголовок, выделяет оперативную память для процесса, загружает данные (в т. ч. машинный код) в память, загружает библиотеки, если они не были загружены, производит инициализацию и переходит к точке входа (адрес первой машинной команды) .
Для этого она вызывает кучу других функций.

После этого программа сама ответственна за своё выполнение до момента, пока не будет возврата в вызвавшую функцию или вызова команды ОС, предназначенной для завершения программы.

Если конечно это не .net.

компиляцию делает компилятор, компоновку - компоновщик.
После компоновщика выходит исполняемый файл, который запускается двойным щелчком в проводнике без всяких там компиляций.
Gavril Zakharov
Gavril Zakharov
9 996
Лучший ответ
"при запуске экзешного файла" происходит описанное в пункте 4
вы не путайте товарищь! сборку проекта с запуском ЕХЕ файла, это очень разные вещи. и касательно второго происходит (исходя смысла вопроса) развертывание РЕ формата. почитайте об этом! а то что вы написали под пунктами 1-4 это к области получения ЕХЕ фала РЕ формата.
KK
Kairosh Kakenov
90 209
При клике на EXE файле происходит
4. Загрузка программы в ОЗУ и её выполнение центральным процессорным устройством.
1-3. Происходит на этапе компиляции, т. е. создается машинный код. И делается это единаразово для подготовки запускаемого файла. После этого ехе исполняется начиная с 4 этапа.
LK
Leonid Komissarenko
57 036
все описанное происходит на стадии компиляции в exe, описанное больше на транслятор похоже но не на С++
Andrei Towetinov
Andrei Towetinov
14 670

Похожие вопросы