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 :

Problème de compilation ?


Sujet :

x86 32-bits / 64-bits Assembleur

  1. #1
    Nouveau Candidat au Club
    Homme Profil pro
    Passionné!
    Inscrit en
    Janvier 2015
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Passionné!
    Secteur : Enseignement

    Informations forums :
    Inscription : Janvier 2015
    Messages : 2
    Points : 1
    Points
    1
    Par défaut Problème de compilation ?
    Bonjour à tous,

    Je n'arrive pas à créer un exécutable qui fonctionne à partir d'un petit fichier .asm. Je suis sous Windows 8.1 64bits.
    Je pars de ce code :
    TEST.ASM
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    section .data
    msg db "coucou", 10, '$'
     
    section .text
    GLOBAL _start
    _start:
    mov  bx, msg
    ret
    Ensuite j'assemble avec NASM : nasm -f win64 test.asm -o test.o
    Je link avec LD.EXE de MINGW64 : ld.exe test.o -o test.exe
    J'obtiens bien un test.exe mais lorsque je le lance une boite de dialogue me dit "à cesser de fonctionner".
    J'ai remarqué que si je fais que des manipulations sur les registres cela marche (la fenêtre s'ouvre et se referme sans erreur), mais quand je manipule la mémoire j'ai droit au message d'erreur.
    D'où vient le problème ?
    Merci à tous ceux qui pourront m'aider
    Bonne soirée.

  2. #2
    Membre averti

    Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2007
    Messages
    82
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 82
    Points : 341
    Points
    341

  3. #3
    Nouveau Candidat au Club
    Homme Profil pro
    Passionné!
    Inscrit en
    Janvier 2015
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Passionné!
    Secteur : Enseignement

    Informations forums :
    Inscription : Janvier 2015
    Messages : 2
    Points : 1
    Points
    1
    Par défaut
    Merci beaucoup pour ton lien !
    en fait je n'utilisais pas les registres adaptés : 64 bits.
    J'ai juste besoin de changer bx en rbx.
    Bon weekend !

  4. #4
    Responsable Systèmes


    Homme Profil pro
    Gestion de parcs informatique
    Inscrit en
    Août 2011
    Messages
    17 431
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Gestion de parcs informatique
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Août 2011
    Messages : 17 431
    Points : 43 057
    Points
    43 057
    Par défaut
    Et ça marche donc ?

    Je ne sais pas comment s'effectue les appels windows en asm 64.
    On utilise MessageBoxA ou la version 64 bits porte un autre nom ?

    J'aprécierais un exemple opérationnel (si celui présenté n'est pas viable), je n'utilises pas les APIs Windows

    Par ailleurs pourquoi l'ajout d'un "$" à la fin de msg ? ça ressemble à une chaine tel que les attends les API Ms-dos.
    Ma page sur developpez.com : http://chrtophe.developpez.com/ (avec mes articles)
    Mon article sur le P2V, mon article sur le cloud
    Consultez nos FAQ : Windows, Linux, Virtualisation

  5. #5
    Membre averti

    Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2007
    Messages
    82
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 82
    Points : 341
    Points
    341
    Par défaut
    Les fonctions de l'OS sont dans la version de l'OS. Sur un Win64, elles seront en 64 bits, et sinon en 32. Subtilité, et sous réserve de le tester, sur un OS 32 bits mais une machine 64, il est possible d'utiliser les instructions 64 bits. Néanmoins, les appels de fonctions se font selon des procédures différentes. Via la pile pour du 32 bits et via les registres pour les 4 premiers arguments entiers ainsi que les n premiers flottants. La suite se fait par la pile as usual.

  6. #6
    Responsable Systèmes


    Homme Profil pro
    Gestion de parcs informatique
    Inscrit en
    Août 2011
    Messages
    17 431
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Gestion de parcs informatique
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Août 2011
    Messages : 17 431
    Points : 43 057
    Points
    43 057
    Par défaut
    Merci pour la réponse à ma question chevalier.
    Ma page sur developpez.com : http://chrtophe.developpez.com/ (avec mes articles)
    Mon article sur le P2V, mon article sur le cloud
    Consultez nos FAQ : Windows, Linux, Virtualisation

Discussions similaires

  1. problème de compilation sous visual C++
    Par fabmili dans le forum MFC
    Réponses: 4
    Dernier message: 08/02/2004, 19h52
  2. problème de compil devc++ socket
    Par stefdem dans le forum Autres éditeurs
    Réponses: 2
    Dernier message: 11/12/2003, 11h33
  3. Réponses: 1
    Dernier message: 29/10/2003, 12h16
  4. Problème de compilation de la DLL du XMLRad
    Par [DreaMs] dans le forum XMLRAD
    Réponses: 2
    Dernier message: 16/04/2003, 16h46
  5. Réponses: 1
    Dernier message: 27/05/2002, 01h44

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