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

Autres éditeurs Discussion :

c++ et assembleur avec g++


Sujet :

Autres éditeurs

  1. #1
    Membre habitué
    Inscrit en
    Octobre 2004
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : Octobre 2004
    Messages : 11
    Par défaut c++ et assembleur avec g++
    question toute bête: comment inclure une portion de code assembleur dans un code source en c++ à compiler avec g++ :

  2. #2
    Membre habitué
    Inscrit en
    Octobre 2004
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : Octobre 2004
    Messages : 11
    Par défaut
    up

  3. #3
    Nouveau candidat au Club
    Profil pro
    Inscrit en
    Décembre 2003
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2003
    Messages : 2
    Par défaut
    Il suffit tout simplement de mettre le code assembleur entre accolade et de faire précéder le tout par asm ou bien _asm ou encore __asm.

  4. #4
    Membre habitué
    Inscrit en
    Octobre 2004
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : Octobre 2004
    Messages : 11
    Par défaut
    Oui j'ai deja essayé mais avec asm j'ai une "parse error before '{' token"
    idem avec __asm et avec _asm il me dit que le fonction _asm n'st pas declarée
    pour info c'est une petite portion du code qui permet de passer en mode graphique
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    void setmode()
    {
    	asm{
    	   	MOV AX, 0x13
    	   	INT 0x10
    	}
    }

  5. #5
    Expert confirmé

    Homme Profil pro
    pdg
    Inscrit en
    Juin 2003
    Messages
    5 756
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : pdg

    Informations forums :
    Inscription : Juin 2003
    Messages : 5 756
    Billets dans le blog
    3
    Par défaut
    Attention, g++ utilise la notation AT&T pour l'assembleur.
    http://www.delorie.com/djgpp/doc/brennan/brennan_att_inline_djgpp.html

  6. #6
    Membre habitué
    Inscrit en
    Octobre 2004
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : Octobre 2004
    Messages : 11
    Par défaut
    ok merci 8)
    donc mon code devient:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    void setmode()
    {
    	asm(
    		"MOV $0x13,%AX\n\t"
    		"INT $0x10"
    	);
    }
    ça compile mais ça plante à l'execution j'ai une fenetre windows avec "...exe a rencontré un probleme et doit fermer .... voulez-vous envoyer le rapport d'erreur"

  7. #7
    Membre éprouvé
    Inscrit en
    Novembre 2002
    Messages
    120
    Détails du profil
    Informations forums :
    Inscription : Novembre 2002
    Messages : 120
    Par défaut
    Je ne pense pas qu'on puisse utiliser des interruptions dans du code Windows 32. Mais ça marche en tout cas pour du 16 bits (Borland Turbo C/Pascal).

  8. #8
    Membre habitué
    Inscrit en
    Octobre 2004
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : Octobre 2004
    Messages : 11
    Par défaut
    je cherche à faire qu'avec le matos de base du standart c++
    up

  9. #9
    Expert confirmé
    Avatar de Luc Hermitte
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2003
    Messages
    5 287
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Août 2003
    Messages : 5 287
    Par défaut
    => impossible.
    Blog|FAQ C++|FAQ fclc++|FAQ Comeau|FAQ C++lite|FAQ BS|Bons livres sur le C++
    Les MP ne sont pas une hotline. Je ne réponds à aucune question technique par le biais de ce média. Et de toutes façons, ma BAL sur dvpz est pleine...

  10. #10
    Expert confirmé

    Homme Profil pro
    pdg
    Inscrit en
    Juin 2003
    Messages
    5 756
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : pdg

    Informations forums :
    Inscription : Juin 2003
    Messages : 5 756
    Billets dans le blog
    3
    Par défaut
    C'est valable s'il utilise DJGPP, sous DOS. En fait tu as le droit d'utiliser les IT dans un programme Win32, mais celles-ci sont totalement différentes d'un programme DOS. Une des seule qui soit valide c'est l'IT 0x3 qui permet de déboguer. Le reste ça va mal se passer pour ton appli. Pour faire du graphisme oriente toi vers quelque chose comme DirectX, OpenGL, la SDL...

  11. #11
    Membre habitué
    Inscrit en
    Octobre 2004
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : Octobre 2004
    Messages : 11
    Par défaut
    Merci pour ton lien Aurelien.Regat-Barrel j'ai reussi à compiler et j'ai l'impression que c'est + propre mais ça crash tjs avec "...exe a rencontré un probleme et doit fermer..." voici le code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    unsigned int tempmode;			// Variable globale temporaire
     
    //----------------------------------------------------------------------//
    // setmode - Appelle le mode passer en parametre			//
    //----------------------------------------------------------------------//
    void setmode(unsigned int mode)
    {
    	tempmode=mode;		//pour travailler sur la variable globale
    	asm(
    		"MOVW _tempmode,%AX\n\t"
    		"INT $0x10"
    	);
    }

  12. #12
    Expert confirmé

    Homme Profil pro
    pdg
    Inscrit en
    Juin 2003
    Messages
    5 756
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : pdg

    Informations forums :
    Inscription : Juin 2003
    Messages : 5 756
    Billets dans le blog
    3
    Par défaut
    Citation Envoyé par ShootDX
    Je ne pense pas qu'on puisse utiliser des interruptions dans du code Windows 32. Mais ça marche en tout cas pour du 16 bits (Borland Turbo C/Pascal).
    Une des seule qui soit valide c'est l'IT 0x3 qui permet de déboguer. Le reste ça va mal se passer pour ton appli. Pour faire du graphisme oriente toi vers quelque chose comme DirectX, OpenGL, la SDL...

Discussions similaires

  1. Inclusion d'assembleur avec DevC++
    Par ValyGator dans le forum C++
    Réponses: 2
    Dernier message: 10/11/2009, 23h49
  2. Editeur assembleur avec compilateur et ému intégrés
    Par haaa11 dans le forum Assembleur
    Réponses: 1
    Dernier message: 15/08/2009, 22h30
  3. Developper en Assembleur avec Ubuntu!
    Par Ibn Rochod dans le forum Ubuntu
    Réponses: 7
    Dernier message: 13/08/2009, 15h41
  4. inclure du code assembleur avec turbo c++
    Par united4life dans le forum Autres éditeurs
    Réponses: 3
    Dernier message: 17/02/2007, 13h17
  5. Compiler du code Assembleur avec Visual C++
    Par maria_0009 dans le forum Visual C++
    Réponses: 1
    Dernier message: 14/01/2007, 13h29

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