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 :

[GCC]Faire compiler du C vers une machine "home-made"


Sujet :

Autres éditeurs

  1. #1
    Membre éclairé

    Inscrit en
    Juin 2004
    Messages
    1 397
    Détails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 1 397
    Points : 763
    Points
    763
    Par défaut [GCC]Faire compiler du C vers une machine "home-made"
    J'explique ma question .
    Est-il possible de générer, à partir d'un code C donné (aux restrictions données au développeur près), un code assembleur pour un processeur qui n'est pas standard ?
    Je pense à un processeur créé par une boîte, qui pourrait être intéressée par ce genre d'outil pour écrire du C, au lieu d'avoir à "se taper [la tête contre les murs] du code assembleur un peu balèze" .

    J'ai essayé de m'exprimer du mieux que j'ai pu...
    Merci d'avance de vos réponses.
    Aucune réponse à une question technique par MP.
    Ce qui vous pose problème peut poser problème à un(e) autre

    http://thebrutace.labrute.fr

  2. #2
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 379
    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 379
    Points : 41 573
    Points
    41 573
    Par défaut
    Ce que tu décris, je crois que ça se définit par le terme "Créer un back-end pour un processeur particulier".

    Je sais que sous GCC on peut modifier le back-end "indépendamment" du front-end, mais j'ignore ce que "indépendamment" signifie réellement...
    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.

  3. #3
    Membre éclairé

    Inscrit en
    Juin 2004
    Messages
    1 397
    Détails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 1 397
    Points : 763
    Points
    763
    Par défaut
    Merci de ta réponse.
    J'ai beau fouiller la documentation de GCC, ou bien j'ai de la m*** dans les yeux, ou bien ça n'y est pas, mais je ne trouve pas concrètement comment faire.
    Peut-être vais-je passer par la mailing list, mais si des gens ont l'expérience de GCC à ce niveau, c'est pas mal non plus :p.
    Aucune réponse à une question technique par MP.
    Ce qui vous pose problème peut poser problème à un(e) autre

    http://thebrutace.labrute.fr

  4. #4
    Modérateur
    Avatar de gangsoleil
    Homme Profil pro
    Manager / Cyber Sécurité
    Inscrit en
    Mai 2004
    Messages
    10 150
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Manager / Cyber Sécurité

    Informations forums :
    Inscription : Mai 2004
    Messages : 10 150
    Points : 28 121
    Points
    28 121
    Par défaut
    Bonjour,

    A priori, ce n'est pas possible.

    En effet, la compilation se passe ainsi (en très très gros et s'il y a des erreurs, hésitez pas à corriger) :
    Lecture du code mot à mot par un lexeur, qui reconnait des mots-clefs, et passe cela au parseur (on est au niveau de l'orthographe des mots si tu préfères).
    Le parseur est un vérificateur grammatical : il prend ce que lui donne le lexeur, et vérifie que ca forme bien une séquence d'instructions. Par exemple, si le premier lexème ets "INT", alors le suivant ne doit pas être un mot-clef (puisque c'est le nom d'une fonction ou d'une variable). S'il y a un ";" après, alros c'est une variable ; mais s'il y a une "(", alors c'est une fonction, qui attends de zero à plusieurs arguments.
    Le Parseur en profite également pour construire un arbre, qui va permettre de faire (ou non) des optimisations de compilation.
    Ensuite, tu peux générer de l'assembleur, un binaire ou n'importe quoi d'autre, selon le compilo et les options.

    Le compilateur GCC est prévu pour générer un code dépend&ant d'une architecture et d'un système d'exploitation. Ce que tu veux faire revient à développer une partie d'un compilateur, qui permet de choisir le langage de destination. C'est certainement possible, c'est probablement faisable avec la communauté de gcc, mais ca n'existe probalement pas encore.
    "La route est longue, mais le chemin est libre" -- https://framasoft.org/
    Les règles du forum

  5. #5
    Membre habitué
    Homme Profil pro
    Inscrit en
    Septembre 2005
    Messages
    177
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2005
    Messages : 177
    Points : 196
    Points
    196
    Par défaut
    Citation Envoyé par gangsoleil
    Bonjour,

    A priori, ce n'est pas possible.

    En effet, la compilation se passe ainsi (en très très gros et s'il y a des erreurs, hésitez pas à corriger) :
    Lecture du code mot à mot par un lexeur, qui reconnait des mots-clefs, et passe cela au parseur (on est au niveau de l'orthographe des mots si tu préfères).
    Le parseur est un vérificateur grammatical : il prend ce que lui donne le lexeur, et vérifie que ca forme bien une séquence d'instructions. Par exemple, si le premier lexème ets "INT", alors le suivant ne doit pas être un mot-clef (puisque c'est le nom d'une fonction ou d'une variable). S'il y a un ";" après, alros c'est une variable ; mais s'il y a une "(", alors c'est une fonction, qui attends de zero à plusieurs arguments.
    Le Parseur en profite également pour construire un arbre, qui va permettre de faire (ou non) des optimisations de compilation.
    Ensuite, tu peux générer de l'assembleur, un binaire ou n'importe quoi d'autre, selon le compilo et les options.

    Le compilateur GCC est prévu pour générer un code dépend&ant d'une architecture et d'un système d'exploitation. Ce que tu veux faire revient à développer une partie d'un compilateur, qui permet de choisir le langage de destination. C'est certainement possible, c'est probablement faisable avec la communauté de gcc, mais ca n'existe probalement pas encore.
    Donc les compilateur actuel fesant un code qui tourne autant sut un P1 qu'un P4 il ne se sert jamais des jeux d'instructions SSE etc ???

    Car tout les Cpu sont sensiblement différent.

Discussions similaires

  1. Réponses: 16
    Dernier message: 11/09/2008, 09h39
  2. Réponses: 6
    Dernier message: 20/07/2007, 15h17
  3. Faire un lien internet vers une Form
    Par ..::snake::.. dans le forum C++Builder
    Réponses: 6
    Dernier message: 06/06/2007, 20h20
  4. Réponses: 3
    Dernier message: 01/08/2006, 09h05
  5. [Réseau] connexion vers une machine derriere un routeur
    Par fantomasmusic dans le forum Entrée/Sortie
    Réponses: 4
    Dernier message: 18/10/2005, 13h54

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