Tp0 compilation Université Cheikh Anta Diop Ecole Supérieure Polytechnique PHASES DE COMPILATION EN LANGAGE C Rédigé Par Fatoumata Binta BAH Maimouna Tamah DIAO Professeur Dr Mandicou BA CTable des matières Introduction I Le pré- processeur II Le compilat
Université Cheikh Anta Diop Ecole Supérieure Polytechnique PHASES DE COMPILATION EN LANGAGE C Rédigé Par Fatoumata Binta BAH Maimouna Tamah DIAO Professeur Dr Mandicou BA CTable des matières Introduction I Le pré- processeur II Le compilateur III L ? assembleur IV L ? éditeur de liens CIntroduction La Compilation consiste à transformer les instructions du programme en langage compréhensible par le processeur langage machine et génère un ?chier binaire dit ?chier objet La compilation d ? un programme écrit en C repose sur un schéma très simple qu ? on retrouve dans la plupart des langages impératifs non-interprétés Pour comprendre ce qui se passe à chaque étape prenons comme exemple un ?chier bonjour c contenant le code suivant include stdio h ? int main void puts Bonjour return I Le pré-processeur Le pré-processeur qui s ? appelle cpp sous Unix est un module de pré-traitement qui e ?ectue des transformations sur le code écrit avant qu ? il ne soit traité par le compilateur Elle consiste à traiter les directives de compilation comme l ? inclusion de ?chier d ? entête de bibliothèques et génère un ?chier texte qui est encore un ?chier source en C La directive de ?ne sert à dé ?nir des constantes et des macros c ? est à dire des bout de code qui seront recopiées tels-quels dans le code C CLa directive include sert à inclure les ?chiers d ? en-tête interfaces des modules que l ? on va utiliser ou écrire par exemple include si on veut utiliser la fonction puts etc Le préprocesseur e ?ectue des remplacements textuels et non sémantiques le préprocesseur n ? est pas le compilateur il n ? interprète pas ce qu ? il manipule On peut faire le rapprochement avec la fonction Remplacer d ? un traitement de texte Dans le cas d ? une directive de ?ne NOM val le pré-processeur remplace donc tout simplement chaque occurrence de la chaine NOM par la valeur val dans tout le texte du ?chier Dans le cas d ? une directive include le pré-processeur fait simplement un copier-coller du contenu du ?chier ?chier h dans le ?chier contenant la macro Ce remplacement est récursif si le ?chier inclut contient lui-même des include les ?chiers qu ? il inclut seront aussi inclut dans le ?chier initial Dans le cas de notre exemple si on tape la commande cpp bonjour c bonjour i le pré-processeur génère un ?chier bonjour i qui contient en plus du code initial que l ? on a écrit tout le contenu du ?chier stdio h plus tout le contenu de tous les ?chiers d ? en-tête inclus dans stdio h récursivement Le contenu du ?chier produit est très verbeux car stdio h est un très gros ?chier d ? en-tête qui inclut lui-même beaucoup d ? autres ?chiers h II Le compilateur Le compilateur le programme cc sous Unix a pour rôle de traduire le code C en code assembleur Le compilateur C a pour particularité
Documents similaires










-
35
-
0
-
0
Licence et utilisation
Gratuit pour un usage personnel Aucune attribution requise- Détails
- Publié le Mar 31, 2022
- Catégorie Law / Droit
- Langue French
- Taille du fichier 51.2kB