Ich habe früher mein OS auch immer in einer VM kompiliert. Ich fand das früher aber ziemlich eklig die Code-Files in die VM zu kriegen und das Kompilat wieder raus.
Da ich mittlerweile git benutze und auch ein Notebook mit Linux mein eigen nenne geht das jetzt besser
Ich habe mich damals für Linux entschieden da ich dort am wenigstens Aufwand mit der Umgebung hatte (ELF wird unterstützt, ich hab direkt gcc) und ich sowieso Linux mehr mag. Letztendlich ist die Frage nach dem Compiler und dem OS Geschmackssache.
Das mit der Geschwindigkeit bei MinGW stimmt, im Vergleich zum Linux-gcc ist es sehr langsam. Selbst gcc auf meinem P4 mit 2.8 GHz schlägt den MinGW auf meinem Core 2 um Längen. Das hat eben damit zu tun dass gcc eigentlich für eine POSIX-Umgebung ausgelegt ist und unter Windows da jede Menge Kompatibilitätskram dazwischenhängt.
Noch langsamer ist bei mir mingw64, sowohl in der 32- als auch in der 64-Bit Version (ich benutze ein personal build von gcc 4.6.2 mit std::thread-Unterstützung aufgrund eines anderen Projektes von mir). Die erzeugten Programme jedoch sind bei allen drei Varianten bei mir schneller als mit VC++ erzeugte.
Je nach Geschmack kommen in diesem Fall also entweder eine VM mit Linux+gcc oder ein Cross-MinGW infrage. Ich bevorzuge Linux+gcc, aber das ist eine Entscheidung die man selbst treffen muss.
In Sachen Assembler fiel meine Wahl auf nasm. Manche mögen vielleicht schief gucken, weil ich unter die gcc-Familie nasm mische, aber ich kam mit nasm bisher super klar und es war auch der erste den ich je benutzt habe.