• [^] # Re: Quelle est la difficulté de la compilation croisée ?

    Posté par . En réponse au journal Chaine(s) de compilation ARM. Évalué à 3. Dernière modification le 12 avril 2012 à 01:13.

    Dans l ́ensemble, tu n ́as pas tort. Mais tu as dû loupé (je pense) ces deux petits passages (oui, les mots ont de l ́importance ;-) ) :

    De manière généralement admise […] la compilation consiste à traduire un programme […] en instructions interprétables par le CPU
    Traduire d ́un langage à un autre […] on parle de trans-compilation.

    … dans lesquels je précisait quand même le cadre ;-)

    prendre un programme écrit en Go, et émettre du code C
    compiler (par exemple) d'un langage assembleur x86 vers un langage assembleur Itanium

    Ce n ́est pas techniquement impossible (et quand même sacrément tordu dans le deuxième cas ;-) ), mais ce n'est pas ce que de manière générale on appelle de la compilation. Dans ces cas, on parle plutôt de trans-compilation (j ́ai même vu une fois tradu-compilation).

    Attention, aussi : l ́assembleur est un langage ! Ce n ́est pas la même chose que le code binaire qui s ́exécute sur le CPU.

    En détails, ça donne :
    […]

    Globalement, oui. À ceci près que l'IR de haut niveau peut déjà subir des transformation avant de passer dans le middle-end :

    [SRC] -> FE -> [HLIR] -> OPTIM -> [HLIR] -> ME/OPTIM -> [LLIR] -> BE -> [ASM] -> ASM/OPTIM -> [OBJ]

    Données au format [X] :

    • SRC = Code source
    • HLIR = High-Level IR
    • LLIR = Low-Level IR
    • ASM = Code assembleur
    • OBJ = Code objet (aka binaire)

    Actions [X] :

    • FE = Frontend
    • OPTIM = Optimisers
    • ME = Middle-end
    • BE = Backend

    Par exemple, OCaml

    Ou Go, plus récemment ; et des tas d'autres : Eiffel, Pascal… Et j'ai aussi écrit un trans-compilateur pour traduire des automates à états vers du C.

    Mais il se fait tard, et l ́on pourrait dire que, la fatigue aidant, nous pinaillions sur les mots… Moins de 24h à attendre pour reprendre la discussion ! ;-p

    Hop,
    Moi.