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 :

Assembleur en ligne GCC vers assembleur en ligne Visual C++ 2003


Sujet :

x86 32-bits / 64-bits Assembleur

  1. #1
    Membre régulier Avatar de Nono Sto
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    350
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 350
    Points : 74
    Points
    74
    Par défaut Assembleur en ligne GCC vers assembleur en ligne Visual C++ 2003
    Hello World

    Pour travailler sur du matos un peu ancien, je dois adapter du code assembleur en ligne issu d'un code compilé en GCC vers de l'assembleur en ligne sur VSC++ 2003 :

    Code C : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    void IoOutputDword(unsigned short address, unsigned int value) 
    {
    //unsigned short address => input operand: le port vers lequel envoyer les données
    //unsigned int value     => output operand: le DWORD à envoyer.
     
    //adresse:	Ce paramètre permet d'indiquer l'adresse du port d'entrée/sortie. Il peut s'agir d'une valeur entre 0 et FFFFh. Voir Référence des ports d'entrée/sortie 80x86 pour plus de détails.
    //accumulateur:	Ce paramètre permet d'indiquer la valeur envoyer dans le port d'entrée/sortie. Il peut s'agir d'un des 3 registres AL, AX ou EAX. Même avec les microprocesseurs 64 bits, il n'est pas possible d'envoyer une valeur plus grande que 32 bits.
     
    	__asm__ __volatile__ ("outl %0,%w1": :"a" (value), "Nd" (address));
    //output operand => %0
    //input  operand => %1
    }
    Je pense qu'il faut utiliser l'instruction OUT DX, EAX mais je ne sais pas comment faire. Le truc sympa c'est que l'assembleur en ligne sur VSC++2003 c'est de l'assembleur "brut". Ce qui revient en fait à traduire vers de l'assembleur classique.

    Pourriez-vous m'aider ?

    Merci

  2. #2
    Expert éminent sénior
    Avatar de Kannagi
    Homme Profil pro
    cyber-paléontologue
    Inscrit en
    Mai 2010
    Messages
    3 214
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cyber-paléontologue

    Informations forums :
    Inscription : Mai 2010
    Messages : 3 214
    Points : 10 140
    Points
    10 140
    Par défaut
    Il y a pas des masses qui utilisent visual studio + asm ici je crois.
    Je ne connais que GCC perso.

    Si outl sert a écrire une I/O en mémoire, tu peux tenter de le faire en C mais pas sûr que ça marche :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    *((volatile int *)(address)) = value;
    M'enfin un truc pareil avec un OS ça marche pas en général.

    Je pense qu'il faut utiliser l'instruction OUT DX, EAX mais je sais pas comment faire. Le truc sympa c'est que l'assembleur en ligne sur VSC++2003 c'est de l'assembleur "brut". Ce qui revient en fait à traduire vers de l'assembleur classique.
    Si tu le connais bien Visual studio pourquoi tu ne tentes pas de changer le code pour VS ?
    (Sinon il y'a la doc officielle qui peut sûrement t'aiguiller).

Discussions similaires

  1. Réponses: 1
    Dernier message: 28/11/2015, 12h25
  2. Traduction assembleur GCC vers Visual Studio 2008
    Par moldavi dans le forum x86 32-bits / 64-bits
    Réponses: 6
    Dernier message: 22/10/2009, 20h20
  3. Coller une ligne Excel vers un StringGrid ou autre
    Par Kok1k1du dans le forum C++Builder
    Réponses: 3
    Dernier message: 18/11/2008, 18h20
  4. [VBA-E]sélec./copie lignes remplies vers feuille
    Par Angel79 dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 19/01/2006, 15h35
  5. Catalogue en ligne > relier vers une autre db
    Par zatomik dans le forum Décisions SGBD
    Réponses: 3
    Dernier message: 14/09/2004, 11h12

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