Remarque: je suis surpris que cela n'ait pas été demandé auparavant, et si c'est le cas, je ne l'ai pas trouvé dans une recherche.
J'ai consulté des tonnes de sites Web, j'ai lu des tonnes d'articles et j'ai entendu des tonnes d'explications. La plupart d'entre eux étaient bons, mais ils étaient tous trop larges ou trop compliqués ou tout simplement mauvais. Donc ma question est, comment fonctionne un compilateur?
S'il s'agit d'une question vaste et difficile, veuillez me le dire. Sinon, veuillez répondre à la question.
Un compilateur est un programme qui traduit le code source d'un autre programme d'un langage de programmation en code exécutable.
Le code source est généralement dans un langage de programmation de haut niveau (par exemple Pascal, C, C++, Java, Perl, C #, etc.). Le code exécutable peut être une séquence d'instructions machine qui peut être exécutée directement par le CPU, ou il peut s'agir d'une représentation intermédiaire interprétée par une machine virtuelle (par exemple Java octet code).
En bref, un compilateur convertit un programme d'un format lisible par l'homme en un format lisible par une machine.
Quant au fonctionnement d'un compilateur, c'est en effet compliqué. Il existe des livres et des cours universitaires sur le sujet. Je vais essayer de décrire brièvement les principales étapes du processus, mais ce sera un aperçu très rapide.
Encore une fois, je souligne qu'il s'agit d'une description très brève. Les compilateurs modernes sont très intelligents et, par conséquent, très compliqués.
Un compilateur est un programme informatique (ou un ensemble d'instructions) qui transforme le code source écrit dans un langage de programmation (le langage source) en un autre langage informatique (le langage cible, ayant souvent une forme binaire connue sous le nom de code objet). La raison la plus courante de vouloir transformer le code source est de créer un programme exécutable.
Les compilateurs relient les programmes source dans les langages de haut niveau avec le matériel sous-jacent. Un compilateur nécessite: