C'est vrai que Mono et pnet ne montrent pas du tout que .net soit portable hein.
Mono en fonctionnant sur x86, x86-64, ppc, sparc, ARM et j'en passe, pour des OS comme Linux, Solaris, *BSD, Mac OS X ou Windows, ne montre pas du tout que .net est portable.
Et Microsoft lui même, en sortant un Rotor qui fonctionnait pour sa version 1 sur FreeBSD, Mac OS X, et Windows, montre que .net n'est pas portable.
C'est juste un format de fichier !!!
Il se trouve que Microsoft qui a créer .net, a utilisé son format pour ses exécutables. Ce qui fait donc qu'un fichier .net est un véritable fichier PE32 ou PE32+ (donc 32 ou 64bits, ça importe quand on doit appeler du code natif 32 ou 64 bits).
Et que donc un loader qui comprend les fichiers PE peut comprendre un binaire .net, mais devra faire appel bien sur à une VM pour exécuter le code intermédiaire.
C'est ce que fait le PE loader de WinXP et 2003, qui quand ils reçoivent un binaire, vérifie s'il a son champ spécial dans son header, et dans ce cas là passe la main à .net, et sinon continue son bonhomme de chemin.
Le code X86 inclus dans le binaire n'est exécuté que par les loaders qui ne comprennent pas ce petit champ spécial (ceux de Win2K et 98, youahou). Même Wine gère ce champ, maintenant qu'on peut exécuter des applis .net dans Wine.
En fait le problème je crois, c'est que tu ne comprends pas bien comment tout ça marche.
[^] # Re: Portable executable win32
Posté par Jb Evain . En réponse à la dépêche Mono 2.0 : le singe continue ses grimaces. Évalué à 2.
C'est vrai que Mono et pnet ne montrent pas du tout que .net soit portable hein.
Mono en fonctionnant sur x86, x86-64, ppc, sparc, ARM et j'en passe, pour des OS comme Linux, Solaris, *BSD, Mac OS X ou Windows, ne montre pas du tout que .net est portable.
Et Microsoft lui même, en sortant un Rotor qui fonctionnait pour sa version 1 sur FreeBSD, Mac OS X, et Windows, montre que .net n'est pas portable.
C'est juste un format de fichier !!!
Il se trouve que Microsoft qui a créer .net, a utilisé son format pour ses exécutables. Ce qui fait donc qu'un fichier .net est un véritable fichier PE32 ou PE32+ (donc 32 ou 64bits, ça importe quand on doit appeler du code natif 32 ou 64 bits).
Et que donc un loader qui comprend les fichiers PE peut comprendre un binaire .net, mais devra faire appel bien sur à une VM pour exécuter le code intermédiaire.
C'est ce que fait le PE loader de WinXP et 2003, qui quand ils reçoivent un binaire, vérifie s'il a son champ spécial dans son header, et dans ce cas là passe la main à .net, et sinon continue son bonhomme de chemin.
Le code X86 inclus dans le binaire n'est exécuté que par les loaders qui ne comprennent pas ce petit champ spécial (ceux de Win2K et 98, youahou). Même Wine gère ce champ, maintenant qu'on peut exécuter des applis .net dans Wine.
En fait le problème je crois, c'est que tu ne comprends pas bien comment tout ça marche.