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 :

Créer un exécutable en C ou C++


Sujet :

C++

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2009
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2009
    Messages : 17
    Points : 15
    Points
    15
    Par défaut Créer un exécutable en C ou C++
    Bonjour.

    Je voudrais coder un compilateur BrainF*ck - non ne hurlez pas commence par un interpréteur, c'est déjà fait ... - et j'ai fait le code dans la version sans exécutable, sauf un petit truc
    C'est que ... euh ... ben qui dit Compilateur dit exécutable
    Seulement je ne sais pas vraiment maîtriser les fichiers exécutables de Windows (pas de troll s'il vous plaît) : *.com et *.exe.
    J'ai regardé un peu le code du compilateur de PowerBatch livré avec le logiciel mais je ne suis pas vraiment fort en ASM et je voudrais éviter les bêtises avec le registre et la RAM

    Donc, je vous demande, existe-t-il une quelconque lib permettant d'écrire des exécutables ?

    Merci d'avance

    PS : Ne m'envoyez pas paître ...

  2. #2
    Rédacteur/Modérateur
    Avatar de JolyLoic
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    5 463
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2004
    Messages : 5 463
    Points : 16 213
    Points
    16 213
    Par défaut
    Le plus simple me semblerait de "compiler" ton code vers une langage autre, comme du C, puis de lancer en ligne de commande un compilateur C sur le code généré. Du coup, tu auras fait un compilateur générant du code pour toute plateforme comprenant le C...
    Ma session aux Microsoft TechDays 2013 : Développer en natif avec C++11.
    Celle des Microsoft TechDays 2014 : Bonnes pratiques pour apprivoiser le C++11 avec Visual C++
    Et celle des Microsoft TechDays 2015 : Visual C++ 2015 : voyage à la découverte d'un nouveau monde
    Je donne des formations au C++ en entreprise, n'hésitez pas à me contacter.

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2009
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2009
    Messages : 17
    Points : 15
    Points
    15
    Par défaut
    J'y pensais, mais le problème c'est que si je désire distribuer le 'compilateur', tout le monde l'a pas gcc ou g++ sur sa machine, de même que pour ocamlc, Perl ou Java ...

    EDIT : en plus sous Windows même si gcc/g++/ocamlc/perl sont installés, faire un simple system("gcc"); ne suffit pas, il faut l'ajouter au Path, etc. et en plus cela varie selon le chemin du compilateur de l'utilisateur ...

  4. #4
    Membre émérite
    Avatar de white_tentacle
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    1 505
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2008
    Messages : 1 505
    Points : 2 799
    Points
    2 799
    Par défaut
    LLVM est fait pour ce genre de choses. Il faudra que tu te tapes la génération brainfuck --> langage intermédiaire LLVM, mais c'est déjà beaucoup plus simple que brainfuck --> elf ou windows ou etc...

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2009
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2009
    Messages : 17
    Points : 15
    Points
    15
    Par défaut
    Je n'ai pas réellement compris le fonctionnement de LLVM, et si j'ai bien compris c'est basé sur gcc, cela ramène donc au problème -> tous le monde l'a pas GCC sur sa machine et encore moins sous Win32 ...

  6. #6
    screetch
    Invité(e)
    Par défaut
    il y a bien une possibilité ce serait d'avoir un executable "vide", préparé a recevoir du code (avec le point d'entrée et tout)
    puis d'utiliser objcopy pour rajouter du code dedans (objcopy permet d'ajouter une section)
    mais tu vas devoir etre plus souples sur tes contraintes si tu veux avoir un résultat; la magie n'existe malheureusement pas et ce que tu t'appretes a faire c'est beaucoup de taff.

  7. #7
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2009
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2009
    Messages : 17
    Points : 15
    Points
    15
    Par défaut
    Oui, je m'en étais rendu compte en relisant le compilateur Batch en ASM de PowerBatch ...
    J'ai trouvé une autre méthode de flemmard (honte à moi) par le biais de l'interpréteur pour faire des *.exe.

    Sujet résolu, merci à tous ceux qui ont pris la peine de poster

  8. #8
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 376
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 376
    Points : 41 544
    Points
    41 544
    Par défaut
    N'oublie pas aussi qu'en utilisant de l'asm, tu te limites à une plate-forme donnée (le x86), voire un OS donné vu le format de sortie.
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

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

Discussions similaires

  1. Appli qui permet de créer un exécutable
    Par chaours dans le forum Delphi
    Réponses: 4
    Dernier message: 03/11/2006, 15h35
  2. java créer un exécutable
    Par damned3 dans le forum EDI et Outils pour Java
    Réponses: 4
    Dernier message: 02/09/2006, 03h58
  3. [VB 2005 Express] Comment créer un exécutable ?
    Par taly dans le forum Visual Studio
    Réponses: 3
    Dernier message: 26/06/2006, 11h30
  4. Créer un exécutable
    Par hitchie dans le forum MFC
    Réponses: 4
    Dernier message: 10/04/2006, 10h05
  5. [Debutant(e)]créer un exécutable
    Par seringua1 dans le forum EDI et Outils pour Java
    Réponses: 3
    Dernier message: 08/06/2004, 12h34

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