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

Assembleur Discussion :

Conversion C en Asm - Conventions d'appel


Sujet :

Assembleur

  1. #1
    Futur Membre du Club
    Inscrit en
    Avril 2004
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : Avril 2004
    Messages : 11
    Points : 8
    Points
    8
    Par défaut Conversion C en Asm - Conventions d'appel
    Bonjour,
    mon problème est assez simple et compliqué. J'utilise un programme principale en c dans le je rentre des paramètres d'adresse.
    Le problème j'utilise des sous programme en .asm et je dois aller chercher ces paramètres pour les utiliser dans mon programme en .asm. J'espere que jusqu'à là je suis compréhensible. J'utilise de long et non des word et je travaille avec la commande link pour aller chercher dans la pile.
    Mais je ne comprend pas trop comment çà marche ces adresses.

    je vous remercie d'avance pour vos reponse
    la vie est un reel trip quotidien.

  2. #2
    Membre habitué Avatar de Nico*3-3
    Inscrit en
    Octobre 2004
    Messages
    164
    Détails du profil
    Informations forums :
    Inscription : Octobre 2004
    Messages : 164
    Points : 145
    Points
    145
    Par défaut
    Bonjour !

    Citation Envoyé par brian79
    mon problème est assez simple et compliqué
    Quoi ? Il est simple ou compliqué ?

    Si je comprends bien, tu a un programme en C qui demande des adresses et des procédures en asm pour utiliser ces adresses.

    Quel est le problème ? Inclure les procédures asm dans le code principal ou faire ces procédures ?

    Si c'est pour les inclure, tu n'a qu'a utiliser le mot-clé asm en C.
    Sinon, si c'est pour faire les procédures, dis exactement ce que tu veux faire et poste le code que tu a essayé, et pour ce qui est des adresses, il y a le tutoriel (ô combien apprécié)
    de Benoît-M : http://benoit-m.developpez.com/assembleur/tutoriel/ qui explique très bien l'adressage et tout le reste.

    J'espère t'avoir aidé...

    Salut
    Tout a une fin, sauf l'infini...
    Projet SKAN : Développement commun d'OS

    Nico*3-3

  3. #3
    Responsable Pascal, Lazarus et Assembleur


    Avatar de Alcatîz
    Homme Profil pro
    Ressources humaines
    Inscrit en
    Mars 2003
    Messages
    7 939
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ressources humaines
    Secteur : Service public

    Informations forums :
    Inscription : Mars 2003
    Messages : 7 939
    Points : 59 409
    Points
    59 409
    Billets dans le blog
    2
    Par défaut
    S'il s'agit des principes de dépôt des paramètres sur la pile et de nettoyage de la pile avec les conventions __CDECL, __STDCALL et __PASCAL, il vaudrait sans doute mieux mieux poster la question directement sur le forum C.

    (si tu le souhaites, je peux y déplacer le thread en entier, pour t'éviter de devoir reposer ta question)

    Je sais qu'avec les trois conventions, l'ordre de dépôt sur la pile ainsi que le nettoyage de la pile varient.
    Avec __CDECL et __STDCALL, les paramètres sont déposés dans l'ordre inverse de leur passage tandis que, avec __PASCAL, ils sont déposés dans l'ordre.
    Toujours avec __PASCAL, c'est la sous-routine qui doit nettoyer la pile; je pense que c'est également le cas pour une des deux autres conventions mais je ne sais plus laquelle...

    P.S. Tu ne trouves rien dans l'aide en ligne de ton compilateur ?
    Règles du forum
    Cours et tutoriels Pascal, Delphi, Lazarus et Assembleur
    Avant de poser une question, consultez les FAQ Pascal, Delphi, Lazarus et Assembleur
    Mes tutoriels et sources Pascal

    Le problème en ce bas monde est que les imbéciles sont sûrs d'eux et fiers comme des coqs de basse cour, alors que les gens intelligents sont emplis de doute. [Bertrand Russell]
    La tolérance atteindra un tel niveau que les personnes intelligentes seront interdites de toute réflexion afin de ne pas offenser les imbéciles. [Fiodor Mikhaïlovitch Dostoïevski]

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

    Informations forums :
    Inscription : Juillet 2002
    Messages : 842
    Points : 696
    Points
    696
    Par défaut
    Ptit tableau (doc de MASM) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
                                  C    SYSCALL STDCALL  BASIC  FORTRAN  PASCAL
                              +-------+-------+-------+-------+-------+-------+
      Leading Underscore      |   X   |       |   X   |       |       |       |
                              |-------+-------+-------+-------+-------+-------|
      Capitalize All          |       |       |       |   X   |   X   |   X   |
                              |-------+-------+-------+-------+-------+-------|
      Arguments Left to Right |       |       |       |   X   |   X   |   X   |
                              |-------+-------+-------+-------+-------+-------|
      Arguments Right to Left |   X   |   X   |   X   |       |       |       |
                              |-------+-------+-------+-------+-------+-------|
      Caller Stack Cleanup    |   X   |       |   *   |       |       |       |
                              |-------+-------+-------+-------+-------+-------|
      BP Saved                |       |       |       |   X   |   X   |   X   |
                              |-------+-------+-------+-------+-------+-------|
      :VARARG Allowed         |   X   |   X   |   X   |       |       |       |
                              +-------+-------+-------+-------+-------+-------+
     
      * The STDCALL language type uses caller stack cleanup if the :VARARG
        parameter is used. Otherwise, the called routine must clean up the
        stack.
    Donc généralement, STDCALL est comme PASCAL, la sous routine nétoie elle même la pile.

Discussions similaires

  1. [XL-2010] Erreur convention d'appel de .DLL incorrect sur import de classe
    Par comme de bien entendu dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 03/09/2011, 12h23
  2. Erreur d'execution '49': convention d'appel de DLL incorrecte
    Par papse dans le forum VB 6 et antérieur
    Réponses: 1
    Dernier message: 20/05/2009, 09h04
  3. Convention d'appel. . . Msg d'erreur
    Par Array dans le forum Débuter
    Réponses: 2
    Dernier message: 23/03/2009, 14h01
  4. Conventions d'appel en Ada 2005
    Par captaindidou dans le forum Ada
    Réponses: 0
    Dernier message: 03/12/2008, 17h39
  5. Fonctions Windows : convention d'appel C ou Pascal
    Par Alcatîz dans le forum x86 32-bits / 64-bits
    Réponses: 2
    Dernier message: 03/04/2003, 20h15

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