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 en assembleur ? est-ce que ça existe ?


Sujet :

Autres éditeurs

  1. #1
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    1
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 1
    Points : 1
    Points
    1
    Par défaut C en assembleur ? est-ce que ça existe ?
    Bonjour, je suis à la recherche d'un éventuel convertisseur de langage C en assembleur, pourriez-vous m'aider, me donner des infos là dessus ? Merci d'avance !!!

  2. #2
    Expert confirmé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Décembre 2003
    Messages
    3 549
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Décembre 2003
    Messages : 3 549
    Points : 4 625
    Points
    4 625
    Par défaut
    Cela s'appelle un "compilateur".

  3. #3
    Expert éminent sénior
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 67
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Points : 20 985
    Points
    20 985
    Par défaut
    Citation Envoyé par John Davis
    Bonjour, je suis à la recherche d'un éventuel convertisseur de langage C en assembleur, pourriez-vous m'aider, me donner des infos là dessus ? Merci d'avance !!!
    Oui. Ton compilateur a sans doute une option qui permet de garder le ficher source assembleur. (Je crois qu'avec gcc, c'est -S)

    C'est une question pour le forum http://www.developpez.net/forums/forumdisplay.php?f=65

  4. #4
    Rédacteur
    Avatar de Franck.H
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2004
    Messages
    6 951
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Service public

    Informations forums :
    Inscription : Janvier 2004
    Messages : 6 951
    Points : 12 462
    Points
    12 462
    Par défaut
    Avec gcc, c'est l'option -S, ca te créé un fichier assembleur avec la syntaxe AT&T si je me souviens !
    Et bienvenue sur les forums de developpez.com

  5. #5
    Expert éminent

    Inscrit en
    Novembre 2005
    Messages
    5 145
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 5 145
    Points : 6 911
    Points
    6 911
    Par défaut
    Citation Envoyé par Franck.H
    Avec gcc, c'est l'option -S, ca te créé un fichier assembleur avec la syntaxe AT&T si je me souviens !
    Et bienvenue sur les forums de developpez.com
    -masm=intel avec des versions suffisemment récentes (au moins depuis la 3.2 -- et vu le rapport entre la 3.2 et la 3.1 ça m'étonnerait que ce ne soit pas dans la 3.1).

  6. #6
    Rédacteur
    Avatar de Franck.H
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2004
    Messages
    6 951
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Service public

    Informations forums :
    Inscription : Janvier 2004
    Messages : 6 951
    Points : 12 462
    Points
    12 462
    Par défaut
    Citation Envoyé par Jean-Marc.Bourguet
    -masm=intel avec des versions suffisemment récentes (au moins depuis la 3.2 -- et vu le rapport entre la 3.2 et la 3.1 ça m'étonnerait que ce ne soit pas dans la 3.1).
    Je prend note, c'est toujours bon à savoir, merci pour la précision

  7. #7
    Membre éprouvé
    Avatar de InOCamlWeTrust
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    1 036
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 1 036
    Points : 1 284
    Points
    1 284
    Par défaut
    Citation Envoyé par John Davis
    Bonjour, je suis à la recherche d'un éventuel convertisseur de langage C en assembleur, pourriez-vous m'aider, me donner des infos là dessus ? Merci d'avance !!!
    Oui, c'est exact : les options -S et -masm=intel engendrent bien un fichier assembleur .s du même nom que le fichier source : je le sais car je les utilise très fréquemment.

    Quelques petites remarques : si tu veux retrouver tes chatons dans le code assembleur engendré par le compilateur, je ne saurais trop te recommander de compiler sans optimisations, donc avec la commande typique : "gcc -masm=intel -S -Wall nom_de_fichier.c", et ce pour une raison très simple : le code engendré par gcc avec l'option -O3 (optimisations génériques maximales) est extrêmement difficile à lire.

    Mieux vaut au début compiler sans optimisations, au moins avec les versions 3.3.1 et antérieurs de gcc, car il produit alors un code assembleur, et gcc a été fait pour celà, très proche du code C... donc parfaitement lisible.

    L'exercice inverse peut être très amusant, enfin pour quelqu'un qui, comme moi, s'amuse comme un fou lorsqu'il programme en essembleur : écrire des sous-routines, voire des fonctions, an assembleur et les utiliser en C. Il faut pour celà "apprendre", bien que le mot soit mal approprié, le standard des appels de fonctions C, trivial ou presque si on a l'habitude d'organiser son mode de pensée dans ce langage.

    Tu pourras ainsi comparer les temps d'exécution entre une fonction écrite en C et compilée avec toutes les optimisations du compilateur (du moment qu'elles ne rentrent pas en conflit) et une fonction écrite directement en assembleur : tu te rendras vite compte que le code engendré par un humain est aujourd'hui dans la plupart des cas, mais pas tous tout de même, sous-optimal comparé à celui produit par le compilateur.

    On apprend ainsi à regarder ces drôles de bestioles que sont les compilateurs d'une autre façon !

  8. #8
    Expert éminent sénior
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 67
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Points : 20 985
    Points
    20 985
    Par défaut
    Citation Envoyé par InOCamlWeTrust
    Il faut pour celà "apprendre", bien que le mot soit mal approprié, le standard des appels de fonctions C, trivial ou presque si on a l'habitude d'organiser son mode de pensée dans ce langage.
    Ca n'a rien à voir. l'ABI (Application Binary Interface) est propre à chaque compilateur. Elle est certe documentée, mais n'est absolument pas standardisée. Ce qui se passe en C sous DOS/Windows n'a rien à voir avec ce qui se passe en 68k ou en PowerPC...

    Il faut tout réapprendre à chaque nouvelle cible.

  9. #9
    Membre éprouvé
    Avatar de InOCamlWeTrust
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    1 036
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 1 036
    Points : 1 284
    Points
    1 284
    Par défaut
    Citation Envoyé par Emmanuel Delahaye
    Ca n'a rien à voir. l'ABI (Application Binary Interface) est propre à chaque compilateur.
    Je parle uniquement de ce que je connais.

    Sous IA-32, il semblerait qu'il y ait au moins une interface commune sur laquelle les développeurs de compilateurs semblent s'entendre : elle est de plus quasiment identique entre le monde Unix, Linux et Windows. Certes, il est très probable que de petits différences existent selon le compilateur, mais, d'après ce que je sais et ce que j'ai pu expérimenter, il est tout de même nécessaire de se mettre d'accord au moins sur quelques points... ou sinon il y aurait des problèmes à faire tourner des programmes compilés avec des compilateuirs différents sur la même machine.

    Là encore, je parle de ce que sais d'après la documentation fournie avec NASM et autres sources.

    Les différences que je connais de ce côté-là concernent les paramètres des procédures (dépilés par le programme appelant sous Unix/Linux et par le programme appelé sous Windows), ainsi que le système d'utilisation de l'instruction INT (paramètres passés par la pile sous BSD, par registres sous Linux, en général).

    Citation Envoyé par Emmanuel Delahaye
    Ce qui se passe en C sous DOS/Windows n'a rien à voir avec ce qui se passe en 68k ou en PowerPC...

    Il faut tout réapprendre à chaque nouvelle cible.
    Je suis d'accord, on ne peut comparer que pour un même type de processeur, et parfois de système.

Discussions similaires

  1. NuméricStepper est ce que ça existe?
    Par starr dans le forum Balisage (X)HTML et validation W3C
    Réponses: 7
    Dernier message: 04/01/2008, 23h46
  2. Est-ce que ca existe les constructeurs abstraits ?
    Par Invité dans le forum Delphi
    Réponses: 2
    Dernier message: 19/05/2007, 11h19
  3. Point d'acces XML multi-BD ... est-ce que ça existe ?
    Par Hervé Saladin dans le forum XQUERY/SGBD
    Réponses: 2
    Dernier message: 02/03/2006, 17h27
  4. Est-ce que ça existe ?
    Par LadyWasky dans le forum Bases de données
    Réponses: 5
    Dernier message: 14/10/2005, 15h33
  5. Est ce que ça existe une api java pour code barre ?
    Par miloud dans le forum Entrée/Sortie
    Réponses: 2
    Dernier message: 14/04/2005, 17h20

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