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 :

gcc & assembleur dans code C ou C++


Sujet :

C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éprouvé Avatar de uriotcea
    Homme Profil pro
    Ingénieur / physicien
    Inscrit en
    Septembre 2003
    Messages
    1 301
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur / physicien
    Secteur : Service public

    Informations forums :
    Inscription : Septembre 2003
    Messages : 1 301
    Par défaut gcc & assembleur dans code C ou C++
    Bonjour,

    j'essaye de faire ca et j'ai ce type d'erreur sous gcc

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    unsigned long a, b;
    asm
    {
      db 0x0F,0x31 
      mov [a],eax
    }

    error: expected '(' before '{' token|
    'db' undeclared (first use in this function)|

  2. #2
    Membre éprouvé Avatar de alexrtz
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2003
    Messages
    639
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juin 2003
    Messages : 639
    Par défaut
    Essaye de mettre la première accolade sur la même ligne que asm.

  3. #3
    Rédacteur
    Avatar de Laurent Gomila
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2003
    Messages
    10 651
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651
    Par défaut
    Ce n'est a priori pas la syntaxe utilisée par gcc.

    Commence par lire la documentation, par exemple ici :
    http://www.ibiblio.org/gferg/ldp/GCC...bly-HOWTO.html

  4. #4
    Membre éprouvé Avatar de uriotcea
    Homme Profil pro
    Ingénieur / physicien
    Inscrit en
    Septembre 2003
    Messages
    1 301
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur / physicien
    Secteur : Service public

    Informations forums :
    Inscription : Septembre 2003
    Messages : 1 301
    Par défaut
    Ok merci, je vais étudier ca.
    Sinon, déplacer l'accolade ne change rien

  5. #5
    Inactif  
    Avatar de Mac LAK
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    3 893
    Détails du profil
    Informations personnelles :
    Âge : 51
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Octobre 2004
    Messages : 3 893
    Par défaut
    Ce que tu as écrit (et l'accolade ouvrante DOIT être sur la même ligne que le asm) est la syntaxe utilisée par Visual... Sauf à grands coups de macros, on ne peut pas avoir le même code inline sur Visual et GCC.
    Mac LAK.
    ___________________________________________________
    Ne prenez pas la vie trop au sérieux, de toutes façons, vous n'en sortirez pas vivant.

    Sources et composants Delphi sur mon site, L'antre du Lak.
    Pas de question technique par MP : posez-la dans un nouveau sujet, sur le forum adéquat.

    Rejoignez-nous sur : Serveur de fichiers [NAS] Le Tableau de bord projets Le groupe de travail ICMO

  6. #6
    Expert confirmé

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

    Voici un exemple d'assembleur dans GCC (c'est une fonction extraite brute d'un beaucoup plus grand fichier, et qui ne peut fonctionner seule, c'est seulement un exemple)
    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
    uint_32 am_RandomU32 (void) {
        if (!isInitialized) { am_RandomInitialize(0); }
     
        __asm__ (
            "movl %[rv], %%eax\n\t"  // eax = r_value
            "mull %[mu]\n\t"         // edx:eax = r_value * multiplier
            "divl %[mo]\n\t"         // eax/edx contiennent (r_value * multiplier)/modulus
                                     // eax = quotient, edx = reste (que l'on cherche)
            "movl %%edx, %[rv]\n\t"  // on met r_value à jour
            "movl %%edx, %%eax\n\t"  // et retourne r_value
            : [rv] "=m" (r_value)
            : [mo] "m" (modulus) , [mu] "m" (multiplier)
            : "%eax", "%ebx", "%edx"
        );
    }
    La syntaxe utilisée est dite AT&T, et je la trouve moins intuitive que la syntaxe Intel utilisées par Visual C++.

Discussions similaires

  1. Insertion assembleur dans code C++ ?
    Par bulki dans le forum Autres éditeurs
    Réponses: 1
    Dernier message: 27/03/2010, 10h18
  2. Le port parallèle en Assembleur dans code C
    Par ayziaa dans le forum x86 32-bits / 64-bits
    Réponses: 12
    Dernier message: 02/07/2009, 11h39
  3. Problème avec assembleur dans code C++
    Par wishmerhill dans le forum C++
    Réponses: 0
    Dernier message: 05/03/2008, 11h38
  4. Problème d'inclusion de code Assembleur dans du C
    Par tnarol dans le forum x86 32-bits / 64-bits
    Réponses: 5
    Dernier message: 06/09/2006, 18h56
  5. probleme d'insertion de code assembleur dans du c++
    Par Pragmateek dans le forum C++
    Réponses: 4
    Dernier message: 05/03/2006, 23h30

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