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 :

Utiliser une constante(define) dans de l'inline ASM(Intel)


Sujet :

C

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    128
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juin 2007
    Messages : 128
    Points : 70
    Points
    70
    Par défaut Utiliser une constante(define) dans de l'inline ASM(Intel)
    Bonjour ou bonsoir,

    Tout est dans le titre. Pour faire simple, j'aimerais que ceci fonctionne :
    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
    #define CONSTANTE1 42
    #define CONSTANTE2 13
    #define RESULTAT   (CONSTANTE1 + CONSTANTE2)
    .
    .
    .
    void main()
    {
    .
    .
    .
    asm(".intel_syntax noprefix");
    asm("MOV EAX, RESULTAT");
    asm(".att_syntax noprefix");
    .
    .
    .
    }
    Pourriez-vous m'aider ?
    Un grand merci

  2. #2
    Rédacteur

    Avatar de ram-0000
    Homme Profil pro
    Consultant en sécurité
    Inscrit en
    Mai 2007
    Messages
    11 517
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Consultant en sécurité
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mai 2007
    Messages : 11 517
    Points : 50 367
    Points
    50 367
    Par défaut
    Il y a deux possibilités je pense :
    • soit tu joues avec le pre-processeur mais ce sera pas simple à lire
    • soit tu passes par une variable locale (ce qui sera à mon avis plus lisible et surtout plus debuggable.

    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
    #define CONSTANTE1 42
    #define CONSTANTE2 13
    #define RESULTAT   (CONSTANTE1 + CONSTANTE2)
     
     
     
    void main()
    {
     
    int var_tmp = RESULTAT;
     
    asm(".intel_syntax noprefix");
    asm("MOV EAX, var_tmp");    /* ici, il faut voir la syntaxe car je ne sais absolument pas comment passer une variable à l'assembleur généré mais je sais que c'est possible */
    asm(".att_syntax noprefix");
     
     
     
    }
    Raymond
    Vous souhaitez participer à la rubrique Réseaux ? Contactez-moi

    Cafuro Cafuro est un outil SNMP dont le but est d'aider les administrateurs système et réseau à configurer leurs équipements SNMP réseau.
    e-verbe Un logiciel de conjugaison des verbes de la langue française.

    Ma page personnelle sur DVP
    .

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    128
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juin 2007
    Messages : 128
    Points : 70
    Points
    70
    Par défaut
    Merci pour ta réponse.
    En effet, j'y avais pensé à la variable globale.
    Je cherchais néanmoins une solution plus directe ^^
    J'en ai trouvé une, mais bon, je ne la comprend pas.. Si quelqu'un peut m'expliquer comment fonctionne la stringification ?

    Solution également valable :
    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
    21
     
    #define xstr(s) 	str(s)
    #define str(s)		#s
    #define CONSTANTE1 	42
    #define CONSTANTE2 	13
    #define RESULTAT   	(CONSTANTE1 + CONSTANTE2)
    .
    .
    .
    void main()
    {
    .
    .
    .
    	asm(".intel_syntax noprefix");
    	asm("MOV EAX, "xstr(RESULTAT));
    	asm(".att_syntax noprefix");
    .
    .
    .
    }

  4. #4
    Rédacteur

    Avatar de ram-0000
    Homme Profil pro
    Consultant en sécurité
    Inscrit en
    Mai 2007
    Messages
    11 517
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Consultant en sécurité
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mai 2007
    Messages : 11 517
    Points : 50 367
    Points
    50 367
    Par défaut
    C est la solution qui joue avec le pre processeur C
    Raymond
    Vous souhaitez participer à la rubrique Réseaux ? Contactez-moi

    Cafuro Cafuro est un outil SNMP dont le but est d'aider les administrateurs système et réseau à configurer leurs équipements SNMP réseau.
    e-verbe Un logiciel de conjugaison des verbes de la langue française.

    Ma page personnelle sur DVP
    .

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    128
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juin 2007
    Messages : 128
    Points : 70
    Points
    70
    Par défaut
    Oui, oui, ça je sais, mais j'aimerais comprendre la signification de :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    #define xstr(s) 	str(s)
    #define str(s)		#s

  6. #6

  7. #7
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    128
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juin 2007
    Messages : 128
    Points : 70
    Points
    70
    Par défaut
    Gracias Mon anglais est bon, mais je ne comprenais pas le double macro. En français c'est bien plus claire ^^

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

Discussions similaires

  1. Suppression de valeur dans une constante(define)
    Par BenoitTCN dans le forum Langage
    Réponses: 4
    Dernier message: 17/12/2008, 13h10
  2. Utiliser une constante dans un texte
    Par 78alex78 dans le forum Langage
    Réponses: 1
    Dernier message: 08/01/2007, 15h23
  3. Utiliser une constante dans une requête
    Par Nabouille dans le forum Access
    Réponses: 4
    Dernier message: 19/04/2006, 13h09
  4. [jre]utiliser une autre vm dans eclipse
    Par champion dans le forum Eclipse Java
    Réponses: 10
    Dernier message: 02/07/2004, 11h21
  5. Réponses: 2
    Dernier message: 24/06/2003, 20h31

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