IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

x86 32-bits / 64-bits Assembleur Discussion :

Masm sur Windows 7 (64bits)


Sujet :

x86 32-bits / 64-bits Assembleur

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre actif
    Inscrit en
    Octobre 2007
    Messages
    95
    Détails du profil
    Informations forums :
    Inscription : Octobre 2007
    Messages : 95
    Par défaut Masm sur Windows 7 (64bits)
    Bonjour,

    Comme cité dans le titre je veux utiliser le Masm (programmation assembleur) sur Windows 7 (64bits)
    mais ça ne marche pas,

    y a-t-il une version pour les 64bits,

    Merci de m'aider

  2. #2
    Membre habitué
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2009
    Messages : 13
    Par défaut masm32 c'est pour les architectures 32bits !!!
    Bonjour,

    A mon humble avis, masm32 est fait pour les architectures 32 et pas 64. Je dirais que le seul moyen de l'utiliser sous 7 c'est de créer une machine virtuelle avec un Windows 32bits dessus.

    Sur le site msdn, dans la section Download, il y a VirtualPC 2007 qui est gratuit et il y a des images (fichier *.vhd) d'OS windows (Windows Server 2003 par exemple) qui sont téléchargeables en version limitée dans le temps (30 ou 60 jours...).

    Sinon, pour ce qui est du mode 64 bits, je vous conseille d'utiliser un outil comme NASM qui permet de créer des objets en 64 ou 32 bit ou même 16bits MSDOS.

    Un autre moyen est de télécharger une version de visual studio c++ pour architecture x64 ou IA64 selon votre plateforme et de regarder si il n'y a pas un compilateur assembleur et un éditeur de liens dans les binaires.

    Bon courrage et lâchez pas le morceau ! Vous êtes certainement un pionier dans le domaine

    majucarma

  3. #3
    Expert confirmé

    Inscrit en
    Août 2006
    Messages
    3 971
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 3 971
    Par défaut
    Goe,

    Les applications 32 bits fonctionnent très bien sur les Windows 64 bits.

    Par contre, Masm32 ne sait pas générer de code 64 bits.

  4. #4
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Mai 2009
    Messages
    36
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Oise (Picardie)

    Informations forums :
    Inscription : Mai 2009
    Messages : 36
    Par défaut
    Bonjour,

    Citation Envoyé par majucarma Voir le message
    Un autre moyen est de télécharger une version de visual studio c++ pour architecture x64 ou IA64 selon votre plateforme et de regarder si il n'y a pas un compilateur assembleur et un éditeur de liens dans les binaires.
    Exact, un assembler MASM capable de générer du code 64 bits est présent dans la version x64 (et pas IA64, c'est radicalement différent du x86) de Visual Studio C++.

    Tommy

  5. #5
    Membre habitué
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2009
    Messages : 13
    Par défaut MASM 64
    Comme je l'ai sous-entendu dans ma réponse :
    Le fichier ml64.exe dans Visual Studio 2005 ou 2008 pour architecture 64 devrait correspondre au fichier ml.exe de masm32...

    Il y a même un article dans le msdn pour configurer correctement l'environneemnt 64 :

    http://msdn.microsoft.com/en-us/library/hb5z4sxd.aspx


    Pour obtenir visual studio voir le site de Microsoft ou sur le msdn, il semble que MASM soit inclu dans Visual Studio Express qui est gratuit. (voir dans la rubrique téléchargement dans le menu de la page donnée ci-dessus.

    Je suis étonné que MASM32 ne fonctionne pas sur Windows7 64 car effectivement, que les programmes soient en 32 ou 64 bits, ils fonctionnent très bien sur un proc 64. Il devrait donc être possible de développer des appli en 32 bits sous Win 7 avec Masm32. A moins que ce soit les libs...

    Normalement sur un système 64 on a un dédoublement des ressources partagées pour répondre aux besoins des modes 32 ou 64 bits. Mais cela demande de bien configurer les outils de compilation et d'édition des liens.

    Au delà de faire fonctionner le compilateur, la programmation en 64 bits est différente du mode 32bits. Le premier exemple qui me vient à l'esprit sont les conventions d'appels qui n'ont plus rien à voir et dépendent du type de processeur (IA64, x64, EMT64...) ainsi que de l'os installé (Windows/Linux ou UNIX/BSD). Il y a des points communs entre les différents modèles, mais il y a aussi des particularités. Le code correspondant à un appel d'une fonction dans une librairie du système en asm 64 est complètement différent selon les contextes.

    Le passage du mode 32 au mode 64 est un peu plus compliqué que ce que nous avons connus lors du passage du mode 16 au mode 32.

    Voila

    Cordialement,

  6. #6
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Mai 2009
    Messages
    36
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Oise (Picardie)

    Informations forums :
    Inscription : Mai 2009
    Messages : 36
    Par défaut
    Citation Envoyé par majucarma Voir le message
    Je suis étonné que MASM32 ne fonctionne pas sur Windows7 64 car effectivement, que les programmes soient en 32 ou 64 bits, ils fonctionnent très bien sur un proc 64. Il devrait donc être possible de développer des appli en 32 bits sous Win 7 avec Masm32. A moins que ce soit les libs...

    Normalement sur un système 64 on a un dédoublement des ressources partagées pour répondre aux besoins des modes 32 ou 64 bits. Mais cela demande de bien configurer les outils de compilation et d'édition des liens.
    Un Windows 64 bits contient deux répertoires System32: un contenant les fichiers systèmes 64 bits (appelé "System32") et un autre contenant les mêmes fichiers systèmes, mais en 32 bits (appelé "SysWOW64"), pour permettre aux applications 32 bits de fonctionner. Donc normalement, MASM32 devrait fonctionner.

    Citation Envoyé par majucarma Voir le message
    Au delà de faire fonctionner le compilateur, la programmation en 64 bits est différente du mode 32bits. Le premier exemple qui me vient à l'esprit sont les conventions d'appels qui n'ont plus rien à voir et dépendent du type de processeur (IA64, x64, EMT64...) ainsi que de l'os installé (Windows/Linux ou UNIX/BSD). Il y a des points communs entre les différents modèles, mais il y a aussi des particularités. Le code correspondant à un appel d'une fonction dans une librairie du système en asm 64 est complètement différent selon les contextes.

    Le passage du mode 32 au mode 64 est un peu plus compliqué que ce que nous avons connus lors du passage du mode 16 au mode 32.
    Oui, c'est plus compliqué, Un Windows 32 bits utilise la convention d'appel STDCALL. Chaque argument d'une procédure est stockée dans la pile du dernier jusqu'au premier. Un Windows 64 bits utilise la convention d'appel FASTCALL. Je ne comprends pas très bien cette convention d'appél mais il me semble que les premiers arguments d'une procédure sont stockés dans des registres, et le reste dans la pile, selon le nombre d'arguments en tout.

    Au fait, x64 et EM64T sont la même chose (avec quelques différences quand même), là ou le IA64 est totalement différent. Le x64 est une évolution du x86 mis au point par AMD. Cette architecture est compatible avec le x86 classique. Le IA64 fonctionne exclusivement en mode 64 bits. Et plus tard, Intel, à mis au point EM64T, une architecture 64 bits similaire à l'architecture x64.

    Tommy

  7. #7
    Rédacteur
    Avatar de Neitsa
    Homme Profil pro
    Chercheur sécurité informatique
    Inscrit en
    Octobre 2003
    Messages
    1 041
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Chercheur sécurité informatique

    Informations forums :
    Inscription : Octobre 2003
    Messages : 1 041
    Par défaut
    Bonjour,

    en ce qui concerne la programmation assembleur x64 sous Windows, c.f la FAQ de DVP: http://asm.developpez.com/faq/?page=fx64

    Il faut savoir que ML64 (MASM 64) ne gère plus certaines choses (notamment INVOKE, les variables locales (LOCAL), les conditions (.IF . ELSE), etc.) bien utiles quand on est habitué à MASM en 32 bits.

    Daniel Pistelli à fait un bon tuto général sur l'assembleur x64: http://ntcore.com/files/vista_x64.htm#x64_Assembly

    Je conseil plutôt d'utiliser GoAsm pour ce qui est de trouver un programme d'assemblage correct sous x64 : souvent mis à jour, auteur que l'on peut facilement contacter, assemblage très rapide, link transparent, macro invoke, etc. : http://www.jorgon.freeserve.co.uk/

    Jeremy Gordon (L'auteur de GoAsm) a mis en ligne des explications et qques tutos: http://www.jorgon.freeserve.co.uk/#64

    Ceci dit, pour MASM32 sous Windows7 x64, je suis surpris qu'il ne fonctionne pas puisque [ame="http://en.wikipedia.org/wiki/WOW64"]Wow64[/ame] permet justement d'exécuter du code 32 bits sur un O.S 64 bits sans problème. C'est peut être lié à un problème d'installation plutôt qu'au binaire (ml.exe) lui-même.

    Il faudrait que le créateur du fil de discussion nous dise quel type exact de problème il rencontre lors de l'utilisation de MASM32 sur son O.S.

  8. #8
    Membre habitué
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2009
    Messages : 13
    Par défaut Tout à fait d'accord
    Bonjour,

    Tout à fait d'accord avec le dernier message de Neitsa.

    Aussi je pense que nous avons effectivement d'avoir une précision sur le type d'erreur rencontrée (message... et quand...) ainsi nous pourront rejouer le pb.

    Et, il est important de savoir si A.i.A souhaite développer en asm 64 ou 32. Cela peut nous orienter soit vers l'installation de MASM32 soit vers MASM64 ce qui n'est pas la même chose.

    Celon la réponse on peut choisir d'installer MASM 8.0 ou

    Quoiqu'il en soit, de mon point de vue, le plus simple est d'installer Visual Studio C++ 2008 (en version Express ou payante au choix de l'utilisateur) dont MASM (ml.exe) et MASM64 (ml64.exe) font partie des outils de compilation.

    Le lien vers la page de téléchargements : http://msdn.microsoft.com/fr-fr/express/default.aspx

    Ensuite tout est une question de paramétrage et il faut suivre les instructions sur MSDN.

    Aussi, quand aux remarques de tommy60, cela me donne une idée... Il y a peut-être un path à changer dans la config de MASM32... ou même remplacer "System32" par "SysWOW64" dans tous les path pour pointer vers les bonnes bibliothèques sur un Windows 7 64 (marrant qu'ils n'aient pas utilisé System64 pour les libs 64 et System32 pour les libs 32 (enfin, bref...)).

    Du coup, il est peut-être plus simple d'installer masm sur une machine virtuelle en 32 bits... Les exe générés fonctionneront aussi sous Win 7 et c'est plus simple que de monter une usine à gaz.

  9. #9
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Mai 2009
    Messages
    36
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Oise (Picardie)

    Informations forums :
    Inscription : Mai 2009
    Messages : 36
    Par défaut
    Citation Envoyé par majucarma Voir le message
    Du coup, il est peut-être plus simple d'installer masm sur une machine virtuelle en 32 bits... Les exe générés fonctionneront aussi sous Win 7 et c'est plus simple que de monter une usine à gaz.
    Il est peut-être aussi plus simple, comme l'a indiqué Neitsa, d'utiliser un autre assembleur.

Discussions similaires

  1. Virtualiser 2008 Serveur 64bits sur Windows 7 32bits
    Par predalpha dans le forum Virtualisation
    Réponses: 5
    Dernier message: 06/10/2011, 14h38
  2. Réponses: 1
    Dernier message: 23/05/2011, 11h51
  3. Réponses: 2
    Dernier message: 27/10/2009, 17h19
  4. Compiler une application 32bit sur Windows 64bit
    Par will97 dans le forum VB.NET
    Réponses: 3
    Dernier message: 27/09/2009, 01h23
  5. pb d'installation d'Oracle 9 sur windows 2000
    Par condor dans le forum Oracle
    Réponses: 1
    Dernier message: 14/12/2006, 11h40

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo