Как разные EXE-файлы работают в нужное время выполнения? - PullRequest
0 голосов
/ 15 сентября 2010

Мне всегда было любопытно, как одно расширение, EXE, может быть столь же универсальным, как и то, что если вы собираете программу сборки, вы получаете EXE в машинном коде для вашего процессора, но если вы компилируете C # или В другой программе .Net вы также получаете EXE-файл, за исключением того, что он запускается в надлежащей среде выполнения. Я не уверен, если это отличается от ОС к ОС (я думаю, что это так), но когда исполняется EXE, как определяется, как его выполнить?

В связанной заметке, если бы я писал свой собственный язык программирования, как бы я связал свою среду выполнения с этим механизмом?

1 Ответ

4 голосов
/ 15 сентября 2010

При компиляции программы .NET в EXE это больше, чем просто байт-код (например, Java).На самом деле создан собственный исполняемый файл, который загрузит среду выполнения .NET и передаст ей байт-код .NET или отобразит сообщение об ошибке friendly-ish, указывающее, что среда недоступна.

Формат еще более гибкийкроме того, поскольку каждый EXE-файл Windows на самом деле включает в себя программу DOS в начале, которая будет отображать ошибку («не может работать в режиме DOS») при выполнении в качестве программы DOS.

Вы можете прочитать более подробную информацию о PEформат в википедии: http://en.wikipedia.org/wiki/Portable_Executable

...