Pour commencer, Un compilateur est un programme qui transforme un code source en un code objet. Généralement, le code source est écrit dans un langage de programmation (le langage source), il est de haut niveau, et facilement compréhensible par l'humain. Le code objet est généralement écrit en langage de plus bas niveau (appelé langage cible), par exemple un langage d'assemblage ou langage machine, afin de créer un programme exécutable par une machine.
Rôle d'un compilateur
La tâche principale d'un compilateur est de produire un code objet correct qui s'exécutera sur un ordinateur. La plupart des compilateurs permettent d'optimiser le code, c'est-à-dire qu'ils vont chercher à améliorer la vitesse d'exécution, ou réduire l'occupation mémoire du programme
LE DECOMPILATEUR : c'est un programme qui traduit un langage de bas niveau vers un langage de plus haut niveau
C’est un outil servant à reconstituer, partiellement ou totalement, le code source d’un logiciel à partir d’un programme exécutable alors dans un format binaire.
La décompilation est une technique de rétro-ingénierie. Elle peut servir au portage et à l'adaptation d'une application dont le code source n'est pas disponible, à la traduction, à l'analyse et la vérification du fonctionnement d'un programme, et encore au débogage du programme.
Le principe du décompilateur est donc d'étudier ou tester le fonctionnement de ce logiciel afin de déterminer les idées et principes qui sont à la base de n'importe quel élément du logiciel lorsqu'on effectue toute opération de chargement, d'affichage, d'exécution, de transmission ou de stockage du logiciel.
Les logiciels dont le code source est disponible ne nécessitent pas l'utilisation d'un décompilateur.
Pour la plupart des langages de programmation, il est cependant possible de retrouver un certain nombre d'informations sur le code source initial à partir du code compilé. La décompilation est un outil assisté d'aide à la rétro-ingénierie. Un décompilateur fonctionnant de manière entièrement automatique n'est pas réalisable.
La décompilation est généralement explicitement non autorisée par la licence d'utilisation de certains logiciels propriétaires. Elle est parfois interdite par des lois, dans certains pays. Dans certains cas, le recours à la rétro- ingénierie est autorisé dans un but d'interopérabilité.
Quelque compilateur :
GCC : c’est un compilateur utilisé dans la compilation de programmes écrites en langages C et C++, mais également Java ou encore Ada.
Clang : est un front-end pour les langages de la famille du C, utilisant le back-end LLVM
Javac: le compilateur Java le plus répandu
GHC: un compilateur pour Haskell,utiliser dans la programmation fonctionnelle
De nombreux autres compilateurs existent, pour les mêmes langages et pour d'autres egalement.
voir aussi: