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

Langage C++ Discussion :

Version assembleur d'un petit code


Sujet :

Langage C++

  1. #1
    Membre éprouvé

    Profil pro
    Account Manager
    Inscrit en
    Décembre 2006
    Messages
    2 301
    Détails du profil
    Informations personnelles :
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Account Manager

    Informations forums :
    Inscription : Décembre 2006
    Messages : 2 301
    Par défaut Version assembleur d'un petit code
    Bonjour,
    existe-t-il un moyen d'obtenir la version assembleur du code suivant par 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
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    #include <iostream>
    #include <string>
     
    // Pour écrire "cout" au lieu de "std::cout".
    using namespace std;
     
    void echange(double& a, double& b)
    {
        double temp(0);
        temp = a;
        a = b;
        b = temp;
    }
     
    void range(double& a, double& b, double& c)
    {
        double first(a), med(b), last(c);
     
        // Une méthode stupide ?
     
        if(med < first)
        {
            echange(med, first);
        }
     
        if(last < first)
        {
            echange(last, first);
        }
     
        if(last < med)
        {
            echange(med, last);
        }
     
        a = first;
        b = med;
        c = last;
    }
     
    int main()
    {
        double a(0.1), b(2), c(0.03);
     
    	cout << "Au depart, a = " << a
    	     << ", b = " << b
    	     << ", c = " << c
    	     << endl;
     
        range(a, b, c);
     
    	cout << "Apres rangement, a = " << a
    	     << ", b = " << b
    	     << ", c = " << c
    	     << endl;
     
    	return 0;
    }
    J'aimerais en fait un outil qui fasse cela. Ceci serait juste à but pédagogique, pour montrer un peu l'arrière scène de la programmation.

  2. #2
    Membre Expert

    Inscrit en
    Mai 2008
    Messages
    1 014
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 1 014
    Par défaut
    Citation Envoyé par rambc Voir le message
    J'aimerais en fait un outil qui fasse cela.
    Tu veux dire un compilateur ? Car c'est quand même un peu le boulot d'un compilateur à la base.

    Après si tu veux une sortie un peu plus lisible pour les humains il faut passer le bon paramètre au compilateur. Par xemple pour gcc c'est -S

  3. #3
    Membre éprouvé

    Profil pro
    Account Manager
    Inscrit en
    Décembre 2006
    Messages
    2 301
    Détails du profil
    Informations personnelles :
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Account Manager

    Informations forums :
    Inscription : Décembre 2006
    Messages : 2 301
    Par défaut
    Merci, c'est exactement cela que je cherche.

    Citation Envoyé par Arzar Voir le message
    Tu veux dire un compilateur ? Car c'est quand même un peu le boulot d'un compilateur à la base.
    Effectivement, je n'ai pas été précis dans ma question.

  4. #4
    Membre éprouvé
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    2 766
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 2 766
    Par défaut
    Citation Envoyé par Arzar Voir le message
    Tu veux dire un compilateur ? Car c'est quand même un peu le boulot d'un compilateur à la base.
    Ne confondrais-tu pas avec le langage machine ?

  5. #5
    Expert confirmé
    Avatar de Mat.M
    Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2006
    Messages
    8 526
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2006
    Messages : 8 526
    Par défaut
    Citation Envoyé par rambc Voir le message
    J'aimerais en fait un outil qui fasse cela. Ceci serait juste à but pédagogique, pour montrer un peu l'arrière scène de la programmation.
    eh bien il faut prendre un désassembleur genre wdisasm...

  6. #6
    Membre éprouvé

    Profil pro
    Account Manager
    Inscrit en
    Décembre 2006
    Messages
    2 301
    Détails du profil
    Informations personnelles :
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Account Manager

    Informations forums :
    Inscription : Décembre 2006
    Messages : 2 301
    Par défaut
    Citation Envoyé par oodini Voir le message
    Ne confondrais-tu pas avec le langage machine ?
    Non, c'est déjà bien assez compliqué en assembleur : la commande correspond à ce que je cherche.

    L'idée est juste de faire un script très court en C++, et ensuite de montrer une partie du travail fait par le compilateur. C'est aussi simple que cela.

  7. #7
    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,

    Si tu travailles avec Gcc, tu peux lui demander de créer le fichier assembleur avec l'option -S.

    Je ne suis pas certain, mais il n'est pas impossible qu'il soit nécessaire de veiller à ce que le fichier à compiler ait bien été passé au préprocesseur.

    Cela se traduirait alors par la séquence suivante:
    1. passage du préprocesseur :
      Code : Sélectionner tout - Visualiser dans une fenêtre à part
      g++ -E file.cpp >file.i
    2. compilation du fichier préprocessé :
    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

  8. #8
    Membre éprouvé

    Profil pro
    Account Manager
    Inscrit en
    Décembre 2006
    Messages
    2 301
    Détails du profil
    Informations personnelles :
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Account Manager

    Informations forums :
    Inscription : Décembre 2006
    Messages : 2 301
    Par défaut
    Bonjour,
    la commande g++ -S simple.cpp marche directement chez moi (sous Mac O$).

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

Discussions similaires

  1. que fait ce petit code
    Par sam01 dans le forum Langage
    Réponses: 1
    Dernier message: 28/06/2006, 10h38
  2. un petit code tout simple o_O avec des $POST variable :)
    Par dark_vidor dans le forum Langage
    Réponses: 5
    Dernier message: 08/04/2006, 01h08
  3. Probleme avec un petit code (je debute)
    Par cladou dans le forum Général JavaScript
    Réponses: 16
    Dernier message: 10/01/2006, 18h56
  4. help sur un petit code avec XMLHttpRequest et setTimeout
    Par grinder59 dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 01/10/2005, 10h22

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