les étapes de compilation en langage c

20
La compilation en langage C Préparé par Ahmed Abdellaoui

Upload: ahmed-jsoft

Post on 05-Jul-2015

267 views

Category:

Documents


1 download

DESCRIPTION

Les étapes de compilation en langage C programmation en c

TRANSCRIPT

Page 1: Les étapes de compilation en langage C

La compilation en langage C

Préparé par Ahmed Abdellaoui

Page 2: Les étapes de compilation en langage C

Introduction

• L’objectif d’un programmeur c’est d’arriver à générer (puis exécuter) un fichier exécutable. Ceci passe par plusieurs étapes que nous allons décrire dans le cas d’un programme en langage C .

Page 3: Les étapes de compilation en langage C

Introduction

• 1. la première étape consiste à écrire le programme (on parle de source) dans un fichier texte à l’aide d’un éditeur.

En C, on donne l’extension .c à ce fichier.Ce programme est bien évidemment incompréhensible par la machine ;

• 2. la deuxième étape est l’étape de précompilation. Elle consiste à traiter les directives de compilation (comme l’inclusion de fichiers d’entête de bibliothèques) et génère

un fichier texte qui est encore un fichier source en C;

Page 4: Les étapes de compilation en langage C

Introduction• 3. l’étape suivante est la compilation. Elle consiste à

transformer les instructions du programme en langage compréhensible par le processeur (langage machine) et génère un fichier binaire dit fichier objet ; Dans certains documents les deuxième et troisième étapes ne forment qu’une seule étape et sont assimilées à la compilation ;

• 4. la dernière étape consiste à é ectuer l’édition de liens. ffLe code généré à la compilation est complété par le code des fonctions des bibliothèques utilisées.C’est seulement après cette étape que l’on génère un fichier exécutable.

Page 5: Les étapes de compilation en langage C

Définition

• un compilateur est un programme qui lit en entrée 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 repérer et de signaler les erreurs évidentes commises par le programmeur.

Page 6: Les étapes de compilation en langage C

Fichier source et exécutable

• Un fichier peut être défini comme une entité regroupant un ensemble d’informations,stocké sur un support physique (disque par exemple) et manipulable grâce à un système d’exploitation.On distingue di érents type de fffichiers :

Page 7: Les étapes de compilation en langage C

Fichier source et exécutable• – des fichiers exécutables (applications) : un fichier exécutable

contient du code directement interprétable et exécutable par le processeur. Sous dos, ces fichiers prennent l’extension .exe ou .com. Sous UNIX c’est une propriété donnée au fichier qui indique au système qu’il s’agit d’un exécutable.

• – des fichiers binaires : ils contiennent du code machine mais ne sont pas directement exécutables : ce sont des fichiers objets.

• – des fichiers texte (ASCII) 9 : ces fichiers contiennent uniquement des codes dit ASCII (codés sur 7 bits). C’est le type de fichiers le plus portable.

• – des fichiers liés à une application particulière : fichiers musicaux (mp3, waw,...)images (jpeg, gif, tif, png, etc...), vidéo, traitement de texte (doc, wpd ...).

Page 8: Les étapes de compilation en langage C

les fichiers sources C

• – les fichiers d’en-tête, qui contiennent les déclarations des symboles du programme ;

• – les fichiers C, qui contiennent leurs définitions.

Page 9: Les étapes de compilation en langage C

Schéma simplifié d’un compilateur.

What time is it ? Compilateur

Quelle heure est-il ?

Page 10: Les étapes de compilation en langage C

Phases d’un compilateur

Page 11: Les étapes de compilation en langage C

Compilation en C

• C est un langage compilé langage interprété

programme C décrit par un fichier texte appelé fichier source (*.c) traduit en langage machine par un compilateur

• La compilation se décompose en 4 phases: – traitement par le préprocesseur– la compilation– l ’assemblage– l ’édition de liens

Page 12: Les étapes de compilation en langage C

Les phases de compilation

• Traitement par le préprocesseur : réalise des transformations d ’ordre purement textuel (inclusion d ’autres fichiers sources, etc.) (*.i)

• Compilation : traduit le fichier généré par le préprocesseur en assembleur (*.s)

• Assemblage : transforme le code assembleur en fichier binaire appelé fichier objet (*.o)

• Edition de liens : lie entre différent objet (sources de fichiers séparés) pour produire un fichier exécutable.

Page 13: Les étapes de compilation en langage C

Les phases de compilation

• Pour compiler un programme, on n’a donc réellement besoin que de trois types de fichiers :

• les fichiers de déclaration du système et des bibliothèques de base ;

• les fichiers des bibliothèques de base eux-mêmes ;• les fichiers source (de déclaration et de définition) du

programme à compiler.

• En C, les fichiers sources de déclaration portent l’extension .h, et les fichiers de définition portent l’extension .c pour les programmes écrits en C.

Page 14: Les étapes de compilation en langage C
Page 15: Les étapes de compilation en langage C

Les assembleurs

• Dans un assembleur, on utilise le langage de la machine.

• Un code assembleur utilise des noms au lieu de codes binaires pour désigner les opérations et les adresses mémoires.

• Exemple : le code assembleur de l’instruction b:=a+2; peut être :MOV a, R1ADD #2, R1MOV R1, b

Page 16: Les étapes de compilation en langage C

Les éditeurs de liens (linkers)

• Permettent de construire un programme unique à partir de plusieurs fichiers contenant du code machine directement exécutable.

• Ces fichiers peuvent avoir été produits par plusieurs compilations séparées, et un ou plusieurs d’entre eux peuvent être des fichiers ou des routines de bibliothèque, fournis par le système et disponibles pour tout programme qui en a besoin.

Page 17: Les étapes de compilation en langage C

Principe de la compilation séparée

Compilation

Édition des liens

Module M1(M1.h et M1.c)

Module M2(M2.h et M2.c)

... Fichiermain.c

Fichier objetM1.o

Fichier objet M2.o

... Fichier objet main.o

Exécutable

Bibliothèques externes

Page 18: Les étapes de compilation en langage C

Exemple

Page 19: Les étapes de compilation en langage C

Caractéristiques d’un bon compilateur

• Le code produit est correct (équivalence entre code source et code cible).

• Le code produit est rapide.• Le temps de réponse du compilateur est rapide.• Les messages d’erreurs sont précis (nature d’erreur,

indication de la place de l’erreur dans le fichier).• Débogueur offert.• Nombre de passe réduit.• Le code produit est optimisé (en temps et en

espace).

Page 20: Les étapes de compilation en langage C

Merci pour votre attention