If I compile C hello world with MinGW, the resulting exe is 42Kb. If I use Tiny C Compiler, I get something 2Kb. (in both cases without specifying any options or doing anything interesting, just gcc hello.c -o hello.exe)
Now I am aware that a minimum bit of startup code is needed; but what is the extra 40kb of stuff that mingw puts there, what does it do, why is it needed?