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 :

Comment (si possible) gérer des dll en Asm?


Sujet :

x86 32-bits / 64-bits Assembleur

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    92
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Janvier 2004
    Messages : 92
    Par défaut Comment (si possible) gérer des dll en Asm?
    Ben voilà j'espère que quelqu'un aura la réponse, j'aimerais savoir si c'est possible et si oui, comment gérer des dll en assembleur (appeller les fonctions).
    Merci beaucoup d'avance !!!

  2. #2
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    92
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Janvier 2004
    Messages : 92
    Par défaut
    Euh... S'il vous plait...

    Personne ne sait?

  3. #3
    Membre habitué
    Inscrit en
    Mai 2002
    Messages
    15
    Détails du profil
    Informations forums :
    Inscription : Mai 2002
    Messages : 15
    Par défaut
    c'est possible pour l'api windows, c'est une convention simple suffit de pusher les args (je sais plus si cest de droite a gauche ou de gauche a droite) plus compliquer pour dautre dll ecrite avec dautres langages comme le pascal car les args sont passes par registres (mais il existe des directives de compilations pour modifier cela)

  4. #4
    Membre émérite
    Profil pro
    Inscrit en
    Juillet 2002
    Messages
    842
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2002
    Messages : 842
    Par défaut
    Tout dépends de ton dll. Souvent il existe des librairies qui liées te donne implicitement les références. Elles ont l'avantage pratique, de n'avoir rien à gérer coté dll. Sinon, il faut utiliser l'API. Pour Win32 GetProcAdress ou un truc du genre. Tout est possible en asm, mais rien n'est souhaitable. Quant aux conventions d'appel, ca dépends du dll. C'est la doc qui va avec le dll ou toi si c'est toi qui fait le dll qui va décider de la convention. Il y en a plusieurs, C (empilement de droite à gauche, appelant qui néttoie la pile, leading underscore) stdcall (empilement de droite à gauche, appelé qui nettoie, pas de leading underscore), PAscal (Droite à gauche etc.

  5. #5
    Nouveau membre du Club
    Inscrit en
    Mai 2002
    Messages
    8
    Détails du profil
    Informations forums :
    Inscription : Mai 2002
    Messages : 8
    Par défaut
    Tu n'est pas forcé de passer par GetProcAddress et LoadLibraryA.
    Mettons que tu veuilles sous tasm32 appeler l'api xxx d'un dll yyy,
    tu fais un:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    extrn xxx:PROC
    ...
    push arguments
    call xxx
    Seulement, tlink ensuite ne sait pas forcément dans quelle dll se situe
    cette api, c'est pourquoi il faut lui passer en argument un fichier .lib
    qui est chargé de faire la jonction entre nom de l'api et dll où elle se situe.
    Si ton api est une api classique (située dans kernel32.dll ou user32.dll ou ...)
    alors la lib fournie avec tasm32,import32.lib, suffit. Tu appeleras alors tlink 32 comme ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    tlink32 /Tpe /aa  ton_fichier_objet,,, import32.lib
    Si ton api est située dans une dll plus exotique, il faudra crée toi-même
    le fichier.lib correspondant au dll, avec implib.exe par exempe:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    implib yyy.lib yyy.dll
    tlink32 /Tpe /aa  ton_fichier_objet,,, import32.lib  yyy.lib
    Pour les autres assembleurs, ca doit être sensiblement la même chose.

  6. #6
    Membre émérite
    Profil pro
    Inscrit en
    Juillet 2002
    Messages
    842
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2002
    Messages : 842
    Par défaut
    c'est ce qu'on appelle une librairie de référence.

Discussions similaires

  1. Comment trouver le chemin des DLL sous windows 7
    Par colorid dans le forum Langage
    Réponses: 2
    Dernier message: 15/09/2012, 17h19
  2. Comment peux-je gérer des photo sur un formulaire ?
    Par momoG dans le forum VBA Access
    Réponses: 2
    Dernier message: 24/08/2007, 12h04
  3. Réponses: 1
    Dernier message: 25/06/2005, 09h40
  4. [XSLT] Comment procéder pour gérer des langues ?
    Par virgul dans le forum XSL/XSLT/XPATH
    Réponses: 2
    Dernier message: 31/03/2005, 11h01
  5. Réponses: 27
    Dernier message: 03/02/2003, 12h27

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