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

C Discussion :

Introduire de l'assembleur dans un programme C


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Décembre 2005
    Messages
    40
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 40
    Par défaut Introduire de l'assembleur dans un programme C
    comment peut-on inclure un code assembleur dans un programme C ou C++

    [Titre édité par Anomaly : merci de mettre des titres plus explicites pour avoir de meilleures réponses. ]

  2. #2
    Expert confirmé
    Avatar de Skyounet
    Homme Profil pro
    Software Engineer
    Inscrit en
    Mars 2005
    Messages
    6 380
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Software Engineer
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 6 380
    Par défaut
    Cela depend du compilateur par exemple pour Dev-cpp

    Citation Envoyé par FAQ de Bloodshed

    // 2 global variables
    int AdrIO;
    static char ValIO;

    void MyFunction(..........)
    {
    __asm("mov _AdrIO, %dx") ; // loading 16 bits register
    __asm("mov _ValIO, %al") ; // loading 8 bits register
    /*
    Don't forget the underscore _ before each global variable names !
    */
    __asm("mov %ax,%dx") ; // AX --> DX
    }

  3. #3
    Rédacteur
    Avatar de Franck.H
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2004
    Messages
    6 951
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Service public

    Informations forums :
    Inscription : Janvier 2004
    Messages : 6 951
    Par défaut
    Avec Visual C++
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    _asm{
       /* Code assembleur. */
    }
    D'une manière générale, je pense que c'est faisable avec GCC:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    asm{
       /* Code assembleur. */
    }
    Voilà
    Mon Site
    Ma bibliothèque de gestion des chaînes de caractères en C

    L'imagination est plus importante que le savoir. A. Einstein

    Je ne répond à aucune question technique par MP, merci d'avance !

  4. #4
    Membre Expert

    Inscrit en
    Mai 2002
    Messages
    720
    Détails du profil
    Informations forums :
    Inscription : Mai 2002
    Messages : 720

  5. #5
    Membre confirmé Avatar de - Robby -
    Inscrit en
    Juillet 2003
    Messages
    266
    Détails du profil
    Informations forums :
    Inscription : Juillet 2003
    Messages : 266
    Par défaut
    Oui, c'est faisable avec Dev-C++, mais il faut utiliser la syntaxe AT&T ! Avec VC++, c'est nettement plus sympa. Et juste pour complèter , pas besoin de "__asm" à chaque ligne.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
     
    ... int A ;
    __asm
       {
          Pusha
          mov A, eax // tu vois, c'est sympa ... et bien d'autres choses encore.
          ce que tu veux, sauf les instr. privilégiées ...
          ... pour y avoir accès, c'est une autre aventure.
          Popa
       }
    Bon développement.

  6. #6
    Expert éminent
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 395
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 395
    Par défaut
    Euh... Il ne faut pas doubler les % dans l'asm inline sous GCC ?
    J'avais vu ça dans des exemples de code pour un Cross-Compilateur GCC...
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

Discussions similaires

  1. Réponses: 11
    Dernier message: 16/05/2013, 14h15
  2. Inclusion d'Assembleur dans un programme C
    Par J4e8a16n dans le forum x86 32-bits / 64-bits
    Réponses: 5
    Dernier message: 26/03/2009, 22h09
  3. Intégrer un code assembleur dans un programme
    Par laracroft87 dans le forum C
    Réponses: 5
    Dernier message: 27/04/2008, 18h15
  4. Réponses: 4
    Dernier message: 22/04/2007, 08h31
  5. introduire du code assembleur dans un programme C++
    Par hzaki1986 dans le forum C++
    Réponses: 1
    Dernier message: 14/04/2007, 17h14

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