Windows

Un PC basato su chip Intel o AMD può eseguire Windows oppure Linux senza cambiare CPU. E allora viene spontanea una domanda: se un programma Windows contiene istruzioni x86-64 che quel processore conosce già, perché un file EXE compilato per Windows non può partire direttamente su Linux?

La risposta breve è che un programma non è composto soltanto dalle istruzioni destinate alla CPU. Un’applicazione Windows porta con sé una serie di aspettative tecniche precise: presume che il sistema operativo sappia come aprire il suo file eseguibile, dove sistemarne il codice in memoria, quali librerie caricare e che cosa fare quando il programma chiede di aprire una finestra, leggere un file o creare un thread.

Linux organizza tutte queste operazioni in modo diverso rispetto a Windows: ed è proprio qui che entrano in gioco Wine, Proton ma anche alcuni progetti sperimentali che stanno tentando una strada alternativa: eseguire direttamente il codice Windows sulla CPU e ricostruire soltanto i pezzi necessari per farlo dialogare con Linux.

Un EXE non contiene semplicemente “codice Windows”