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

Caml Discussion :

MinCaml compiler: a multi-targeted native code compiler?


Sujet :

Caml

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2016
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2016
    Messages : 17
    Points : 5
    Points
    5
    Par défaut MinCaml compiler: a multi-targeted native code compiler?
    Bonjour à tous,

    Dans mon cours de programmation fonctionnelle appuyé sur Ocaml et le compilateur Mincaml, mon enseignant a sous-entendu que Mincaml était conçu (en anglais je suis sûr de pas dire de bêtise: "to generate native code targeted for different CPU architectures"). Cependant, étant donné que Mincaml génère de l'assembleur SPARC (qui si je ne me trompe pas est dans la catégorie d'architecture RISC), je ne vois pas trop comment cela peut être vrai. Et mon enseignant n'étant pas forcément le plus pédagogique, il m'a un peu envoyé paître quand je lui ai demandé plus d'info..

    Ainsi, comment Mincaml peut-être un "multi-target compiler" en étant basé sur une architecture spécifique? N'est-ce pas contradictoire en soit?

  2. #2
    Membre émérite
    Avatar de SpiceGuid
    Homme Profil pro
    Inscrit en
    Juin 2007
    Messages
    1 704
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire (Rhône Alpes)

    Informations forums :
    Inscription : Juin 2007
    Messages : 1 704
    Points : 2 990
    Points
    2 990
    Par défaut Même front-end, multiple back-end
    Mincaml n'est pas basé sur une architecture spécifique, il peut cibler aussi bien l'architecture SPARC que l'architecture PowerPC.

    Les parties (front-end) qui assurent l'analyse syntaxique, le typage et sa synthèse, et la conversion en HLA (High-Level-Assembler, un langage intermédiaire interne au compilateur), sont communes à toutes les architectures.
    La partie (back-end) qui assure la génération du code natif à partir du HLA est elle spécifique à chaque architecture.

    to generate native code targeted for different CPU architectures
    Oui mais pour chaque nouvelle architecture il faut écrire un nouveau back-end.
    Du même auteur: mon projet, le dernier article publié, le blog dvp et le jeu vidéo.
    Avant de poser une question je lis les règles du forum.

  3. #3
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2016
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2016
    Messages : 17
    Points : 5
    Points
    5
    Par défaut
    Hmm... SI c'est le cas alors mon problème est résolu, toutefois j'ai lu ceci sur le "Crash Course for a MinCaml Compiler" : http://esumii.github.io/min-caml/tutorial-mincaml-17.eng.html

    After closure conversion, we will generate SPARC assembly.
    Est-ce juste un exemple dans le cas de l'architecture SPARC ou bien MinCaml génère toujours de l'assembleur SPARC?

    Merci néanmoins pour cette première réponse!

  4. #4
    Membre émérite
    Avatar de SpiceGuid
    Homme Profil pro
    Inscrit en
    Juin 2007
    Messages
    1 704
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire (Rhône Alpes)

    Informations forums :
    Inscription : Juin 2007
    Messages : 1 704
    Points : 2 990
    Points
    2 990
    Par défaut 3 back-end
    Actuellement il semble y avoir 3 back-end :
    1. le back-end SPARC
    2. le back-end PowerPC
    3. le back-end x86 (32 bits)


    Le back-end à utiliser est choisi à la construction du compilateur.
    Une fois qu'on a construit un Mincaml SPARC il ne pourra pas produire autre chose que du SPARC.
    Si on veut produire du x86 il faudra d'abord construire un Mincaml x86.
    Du même auteur: mon projet, le dernier article publié, le blog dvp et le jeu vidéo.
    Avant de poser une question je lis les règles du forum.

  5. #5
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2016
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2016
    Messages : 17
    Points : 5
    Points
    5
    Par défaut
    Et cette caractéristique de Mincaml où l'on peut modifier la partie back-end, pourquoi ne peut-on pas le faire avec n'importe quel compilateur ? (Je suppose qu'on ne peut pas sinon on ne parlerait pas de multi-targeted compiler) C'est en fait ce fonctionnement interne à Mincaml que je n'arrive pas à comprendre, à la différence d'autres compilateurs, qui lui permet cette flexibilité

  6. #6
    Membre émérite
    Avatar de SpiceGuid
    Homme Profil pro
    Inscrit en
    Juin 2007
    Messages
    1 704
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire (Rhône Alpes)

    Informations forums :
    Inscription : Juin 2007
    Messages : 1 704
    Points : 2 990
    Points
    2 990
    Par défaut
    Hé bien pour moi c'est le contraire, je ne comprends pas pourquoi on parle de "multi-targeted compiler" puisque c'est la règle, ne cibler qu'une seule architecture c'est l'exception depuis plusieurs dizaines d'années.
    C'est plutôt le signe que Mincaml est un projet-jouet. Lorsqu'on n'a ni le polymorphisme de type, ni même un ramasse-miette, il est tentant de se chercher des avantages à bonne compte qui ne nécessitent rien d'autre qu'un codage soigneux. Il est fort possible que ton enseignant ne connaisse pas EasyOCaml qui me paraît un candidat bien plus convaincant pour une première approche en OCaml.
    Du même auteur: mon projet, le dernier article publié, le blog dvp et le jeu vidéo.
    Avant de poser une question je lis les règles du forum.

Discussions similaires

  1. Réponses: 4
    Dernier message: 04/08/2006, 01h02
  2. Réponses: 2
    Dernier message: 25/07/2006, 11h52
  3. Code compilable sous Windows et Unix
    Par xzed dans le forum C
    Réponses: 9
    Dernier message: 16/05/2006, 16h06
  4. Réponses: 1
    Dernier message: 02/02/2006, 11h10
  5. [CODE] Compilation conditionnelle ?
    Par Cornell dans le forum Langage
    Réponses: 3
    Dernier message: 16/09/2003, 18h16

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