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 :

comment insérer du code assembleur


Sujet :

C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Février 2008
    Messages
    112
    Détails du profil
    Informations forums :
    Inscription : Février 2008
    Messages : 112
    Par défaut comment insérer du code assembleur
    Salut !
    J'essai le fameux

    mais le mot clé "asm" n'est pas reconnu par mon compilo (visual studio 2005).
    1-Comment fait on ? Faut il un header pariculier ?
    2-Si met un mov AX, maVariableC++ cela va t il marcher ? sinon comment fait on pour utliser des variables C++ avec du code asm x86 ?

  2. #2
    screetch
    Invité(e)
    Par défaut
    __asm peut etre.

    le mot clé __asm n'est pas supporté sur les plate formes amd64.
    visual recommande d'utiliser les "intrinsics" a la place.

  3. #3
    Membre confirmé
    Inscrit en
    Février 2008
    Messages
    112
    Détails du profil
    Informations forums :
    Inscription : Février 2008
    Messages : 112
    Par défaut
    Merci screetch ! ça marche !

  4. #4
    Membre confirmé
    Inscrit en
    Février 2008
    Messages
    112
    Détails du profil
    Informations forums :
    Inscription : Février 2008
    Messages : 112
    Par défaut
    mais comment on peut faire pour que ce soit portable ?
    c'est quoi les intrinsics ?

  5. #5
    Expert éminent
    Avatar de koala01
    Homme Profil pro
    aucun
    Inscrit en
    Octobre 2004
    Messages
    11 644
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : Belgique

    Informations professionnelles :
    Activité : aucun

    Informations forums :
    Inscription : Octobre 2004
    Messages : 11 644
    Par défaut
    Salut, et bienvenue sur le forum.

    Déjà, je me poserais réellement la question de savoir s'il y a réellement un avantage à insérer du code assembleur dans ton projet.

    Je ne nie absolument pas qu'il y ait des cas dans lesquels c'est intéressant, mais j'ai honnêtement l'impression que cela revient très souvent à chercher la difficulté là où il y avait parfaitement moyen de faire beaucoup plus simple.

    Dans bien des cas, le compilateur te fournira un code assembleur sans doute bien plus efficace que tout ce que tu pourrait écrire toi même.
    A méditer: La solution la plus simple est toujours la moins compliquée
    Ce qui se conçoit bien s'énonce clairement, et les mots pour le dire vous viennent aisément. Nicolas Boileau
    Compiler Gcc sous windows avec MinGW
    Coder efficacement en C++ : dans les bacs le 17 février 2014
    mon tout nouveau blog

  6. #6
    Membre confirmé
    Inscrit en
    Février 2008
    Messages
    112
    Détails du profil
    Informations forums :
    Inscription : Février 2008
    Messages : 112
    Par défaut
    Oui mais j'ai toujours entendu dire que l'assembleur s'exécutait plus vite que le C ou le C++, ce n'est pas le cas ?

  7. #7
    screetch
    Invité(e)
    Par défaut
    il n'y a aucune portabilité du code asm. les intrinsics sont comme des fonctions C (en tous cas la meme syntaxe) mais sont en fait equivalentes aux instructions assembleur. il est devenu desormais impossible d'inserer du code asm dans ton code c++.

    La seule raison valable pour inserer du code asm est d'utiliser des instructions speciales que le compilateur ne connait pas ou n'utilise pas; un exemple est le BREAKPOINT; pour faire un breakpoint sous windows on peut utiliser l'instruction asm "int 3" (soit en gros declenche l'interruption numero 3). mais va faire ca en C++! ^^

    les autres instructions utiles sont les instructions MMX ou SSE qui ne sont toujours pas comprises par les compilos modernes; dans le cas d'un code que l'on souhaite paralleliser (au niveau du proc, pas au niveau des threads) l'assembleur reste obligatoire.
    On pourrait aussi parler de instructions asm interlockées qui permettent d'avoir de l'atomicité.

    pour palier a ce probleme, on a desormais les intrinsics; ce sont des fausses fonctions C qui seront remplacées a la compilation par une sequence secrete d'instructions ASM; ces intrinsics existent pour SSE, MMX, les interlocked, la fonction qui declenche un breakpoint. elle est pas belle la vie ?

    voir le fichier intrin.h pour la liste des intrinsics connus par ton compilateur. hautement peu portable mais plus que l'assembleur. il y a aussi xmmintrin et emmintrin.h, et mmintrin.h

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. comment insérer du code fortran dans prog c ou c++ ?
    Par informatik dans le forum Fortran
    Réponses: 6
    Dernier message: 24/08/2010, 16h34
  2. [OL-2003] Comment insérer du code HTML dans Outlook 2003 ?
    Par fefe69 dans le forum Outlook
    Réponses: 0
    Dernier message: 25/07/2009, 18h42
  3. [DOM] comment insérer du code dynamiquement
    Par Camille01 dans le forum Général JavaScript
    Réponses: 10
    Dernier message: 25/04/2008, 15h03
  4. Réponses: 4
    Dernier message: 22/04/2007, 08h31
  5. Réponses: 5
    Dernier message: 21/12/2004, 18h12

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