Un petit coup d'oeil dans LLVM, l'un des plus puissants cross-compilers qui existe. La magie principale réside dans l’extraordinaire optimiseur, capable de meilleures optimisations que ne le ferait un humain. Les front-ends permettent de supporter différents langages (C/C++/Fortran et autres), et les backends permettent de compiler pour différents processeurs (x86, PowerPC, ARM...).
Ajoutez juste un backend, et voici une famille entière de langages accessibles sur un nouveau processeur. En l’occurrence, il existe même des backends comme emscripten qui produisent du Javascript. C'est ce qui a permis de porter le moteur d'Unreal en Javascript en seulement 4 jours, ou encore des jeux comme Dune 2 ou Commander & Conquer.
Cet article jette un coup d’œil rapide sur le code intermédiaire LLVM, avant sa traduction dans un langage machine précis.
Si dans les années passées il était courant d’écrire directement du code assembleur pour un processeur précis pour obtenir de meilleures performances (j'en ai commis un peu aussi), cela n'est PLUS DU TOUT recommandé de nos jours, car des outils comme LLVM sont capables de produire du code machine bien plus optimisé que le vôtre. (Et surtout, vous n'aurez pas à porter votre code vers chaque nouveau processeur, ou processeur de la même gamme avec de nouvelles instructions.)
(
Permalink)