Vous êtes sur la page 1sur 20

La compilation

en langage C

Prpar par Ahmed Abdellaoui

Introduction

Lobjectif dun programmeur cest darriver gnrer (puis excuter) un chier excutable. Ceci passe par plusieurs tapes que nous allons dcrire dans le cas dun programme en langage

C.

Introduction
1. la premire tape consiste crire le programme (on parle de source) dans un chier texte laide dun diteur. En C, on donne lextension .c ce chier.Ce programme est bien videmment incomprhensible par la machine ; 2. la deuxime tape est ltape de prcompilation. Elle consiste traiter les directives de compilation (comme linclusion de chiers dentte de bibliothques) et gnre un chier texte qui est encore un chier source en C;

Introduction
3. ltape suivante est la compilation. Elle consiste transformer les instructions du programme en langage comprhensible par le processeur (langage machine) et gnre un chier binaire dit chier objet ; Dans certains documents les deuxime et troisime tapes ne forment quune seule tape et sont assimiles la compilation ; 4. la dernire tape consiste ectuer ldition de liens. Le code gnr la compilation est complt par le code des fonctions des bibliothques utilises.Cest seulement aprs cette tape que lon gnre un chier excutable.

Dfinition
un compilateur est un programme qui lit en entre un programme crit dans un premier langage (appel langage source) et le traduit en un programme quivalent crit dans un autre langage (appel langage cible). Au cours de ce processus de traduction, le compilateur tentera galement de reprer et de signaler les erreurs videntes commises par le programmeur.

Fichier source et excutable


Un chier peut tre dni comme une entit regroupant un ensemble dinformations,stock sur un support physique (disque par exemple) et manipulable grce un systme dexploitation.On distingue dirents type de chiers :

Fichier source et excutable


des chiers excutables (applications) : un chier excutable contient du code directement interprtable et excutable par le processeur. Sous dos, ces chiers prennent lextension .exe ou .com. Sous UNIX cest une proprit donne au chier qui indique au systme quil sagit dun excutable. des chiers binaires : ils contiennent du code machine mais ne sont pas directement excutables : ce sont des chiers objets. des chiers texte (ASCII) 9 : ces chiers

les chiers sources C


les chiers den-tte, qui contiennent les dclarations des symboles du programme ; les chiers C, qui contiennent leurs dnitions.

Schma simplifi dun compilateur.


Cliquez pour modifier les styles du texte du masque Deuxime niveau Troisime niveau Quatrime niveau Cinquime niveau

What time is it ?

Compilateur

Quelle heure est-il ?

Phases dun compilateur

Compilation en C
C
est un langage compil langage interprt programme C dcrit par un fichier texte appel fichier source (*.c) traduit en langage machine par un compilateur La compilation se dcompose en 4 phases:
traitement par le prprocesseur la compilation lassemblage ldition de liens

Les phases de compilation


Traitement par le prprocesseur : ralise des transformations dordre purement textuel (inclusion dautres fichiers sources, etc.) (*.i) Compilation : traduit le fichier gnr par le prprocesseur en assembleur (*.s) Assemblage : transforme le code assembleur en fichier binaire appel fichier objet (*.o) Edition de liens : lie entre diffrent objet (sources de fichiers spars) pour produire un fichier excutable.

Les phases de compilation


Pour compiler un programme, on na donc rellement besoin que de trois types de chiers : les chiers de dclaration du systme et des bibliothques de base ; les chiers des bibliothques de base euxmmes ; les chiers source (de dclaration et de dnition) du programme compiler. En

C, les chiers sources de

Les assembleurs
Dans un assembleur, on utilise le langage de la machine. Un code assembleur utilise des noms au lieu de codes binaires pour dsigner les oprations et les adresses mmoires. Exemple : le code assembleur linstruction b:=a+2; peut tre : MOV a, R1 ADD #2, R1 MOV R1, b de

Les diteurs de liens (linkers)


Permettent de construire un programme unique partir de plusieurs fichiers contenant du code machine directement excutable. Ces fichiers peuvent avoir t produits par plusieurs compilations spares, et un ou plusieurs dentre eux peuvent tre des fichiers ou des routines de bibliothque, fournis par le systme et disponibles pour tout programme qui en a besoin.

Principe de la compilation spare


Module M1 (M1.h et M1.c) Module M2 (M2.h et M2.c) ... Fichier main.c

Compilation
Fichier objet M1.o Fichier objet M2.o ... Fichier objet main.o

dition des liens


Excutable

Bibliothques externes

Exemple

Caractristiques dun bon compilateur


Le code produit est correct (quivalence entre code source et code cible). Le code produit est rapide. Le temps de rponse du compilateur est rapide. Les messages derreurs sont prcis (nature derreur, indication de la place de lerreur dans le fichier). Dbogueur offert. Nombre de passe rduit.

Merci pour votre attenti on