Как предшественник написания компилятора, я пытаюсь понять формат Windows (32-разрядный) Portable Executable. В частности, я хотел бы увидеть пример исполняемого файла bare-bones, который ничего не делает, кроме как правильно загружать, запускать и выходить.
Я пробовал писать и компилировать простую основную функцию C, которая ничего не делает, но результирующий файл .exe составляет ~ 22 КБ и содержит много импорта из KERNEL32.DLL(предположительно, используемое LIBC для настройки среды, кучи и т.д.). Даже заголовок DOS, вероятно, может быть меньше (в настоящее время он печатает по умолчанию "Эта программа не может быть запущена в режиме DOS" ).
Какова структура минимально возможного 32-битного исполняемого файла Windows?