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

Visual C++ Discussion :

directive asm dans Visual Studio 2010


Sujet :

Visual C++

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2010
    Messages
    34
    Détails du profil
    Informations personnelles :
    Âge : 54
    Localisation : France

    Informations forums :
    Inscription : Octobre 2010
    Messages : 34
    Par défaut directive asm dans Visual Studio 2010
    Bonjour à tous,

    j'essaye d'intégrer un bout assembleur dans mon source cpp.
    le compilateur refuse l'opcode db ou dd de mon source asm.

    Comment convertir (par exemple)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    __asm {
          mov eax,ds:mesdata[ecx]
    [...]
    mesdata:
         dd 05698bf0h,4455885695h
    }

  2. #2

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

    Informations professionnelles :
    Activité : aucun

    Informations forums :
    Inscription : Octobre 2004
    Messages : 11 635
    Par défaut
    Salut,

    Heuuu, je ne voudrais pas que tu croies que je mette remette ta décision d'utiliser l'assembleur en question (enfin, si, quand meme un peu ), mais, es-tu sur de l'utilité de la manoeuvre

    Les cas dans lesquels cela s'avère réellement indispensable sont en effet relativement restreints :

    Bien souvent, le compilateur sera capable d'optimiser bien mieux l'assembleur que ce que tu ne sera capable de faire.

    De plus, tu gagneras sans doute bien plus en performances en revoyant tes algorithmes qu'en passant "quelques instructions" en assembleurs, fussent--elles particulièrement bien optimisées.

    Enfin, il faut se dire que, si tu décide de mettre de l'assembleur dans ton code, tu dis, de facto, adieu à la portabilité (et sans doute meme à la possibilité de choisir un autre compilateur pour la même plateforme), à moins de truffer ton code de #ifdef #ifndef chaque fois que tu veux utiliser l'assembleur, de sorte à assurer un "minimum" de compatibilité

    Maintenant, il se peut que tu soies parfaitement dans une situation dans laquelle le recours à l'assembleur se présente comme la meilleure solution, mais je me dis que cela valait la peine de te rappeler ces différents points
    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

  4. #4
    Expert confirmé

    Inscrit en
    Août 2006
    Messages
    3 965
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 3 965
    Par défaut
    Noe,

    +1 sur koala01.

    De plus, on ne peut plus utiliser d'asm inline dans VS pour les projets 64 bits !! (en tout cas, je me suis fait jeter quand j'ai essayé).

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2010
    Messages
    34
    Détails du profil
    Informations personnelles :
    Âge : 54
    Localisation : France

    Informations forums :
    Inscription : Octobre 2010
    Messages : 34
    Par défaut
    Merci pour vos réponses.
    En fait, je passe par l'assembleur par obligation car c'est une routine asm que j'ai récupéré et que je veux réutiliser sans la reprogrammer.

    Je ne suis pas non plus très familier du C++ mais je dois créer une DLL. Alors , je fais avec

    @screetch: Merci pour l'info mais la directive _emit ne me convient pas car j'ai un tableau de 1000 dword à compiler. Et un _emit par octet n'est pas envisageable.

    Alors ma question maintenant va etre : Comment convertir mes lignes dd en cpp ?

    Je peux mettre mon tableau en cpp et passer le pointeur à ma routine asm. Ce n'est pas un souci et je pense que c'est la meilleur solution. Mais comment je dois faire ?

  6. #6
    Rédacteur
    Avatar de Neitsa
    Homme Profil pro
    Chercheur sécurité informatique
    Inscrit en
    Octobre 2003
    Messages
    1 041
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Chercheur sécurité informatique

    Informations forums :
    Inscription : Octobre 2003
    Messages : 1 041
    Par défaut
    Bonjour,

    si ce sont juste des données, un petit script de conversion (asm -> C) dans un langage approprié (par ex. python) prend 5 ligne et te permettra de convertir ton tableau de DWORD en tableau d'int par exemple.

    Seconde solution, compilation séparée en assembleur en utilisant ML64 pour produire un *.obj et lié le code C/C++ sur l'obj. M'enfin bon, ça reste "cracra" alors juste pour un tableau de données autant l'avoir en C/C++.

  7. #7
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2010
    Messages
    34
    Détails du profil
    Informations personnelles :
    Âge : 54
    Localisation : France

    Informations forums :
    Inscription : Octobre 2010
    Messages : 34
    Par défaut
    Merci pour la réponse.

    Je vais passer par la premiere solution.

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

Discussions similaires

  1. F# sera inclus dans Visual Studio 2010
    Par LLB dans le forum F#
    Réponses: 7
    Dernier message: 16/06/2010, 13h43
  2. UML class Diagram dans visual studio 2010
    Par obiflo dans le forum Visual Studio
    Réponses: 3
    Dernier message: 09/06/2010, 16h08
  3. Les tests dans Visual Studio 2010
    Par hegros dans le forum Visual Studio
    Réponses: 3
    Dernier message: 21/05/2010, 21h52
  4. LINQ dans Visual Studio 2010
    Par narglix dans le forum C#
    Réponses: 1
    Dernier message: 20/02/2010, 20h02
  5. fsharp web application dans visual studio 2010
    Par aymen.selmi dans le forum Visual Studio
    Réponses: 7
    Dernier message: 09/10/2009, 16h39

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