19.06.2014 Views

Rim Chaabane. Analyse dynamique de ... - Université Paris 8

Rim Chaabane. Analyse dynamique de ... - Université Paris 8

Rim Chaabane. Analyse dynamique de ... - Université Paris 8

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

<strong>Analyse</strong> <strong>dynamique</strong> <strong>de</strong> programmes C<br />

Chapitre 2 - Approche <strong>de</strong> la<br />

problématique et choix <strong>de</strong> la<br />

solution<br />

Le projet d analyse <strong>dynamique</strong> <strong>de</strong> programmes C pose <strong>de</strong> nombreux problèmes. En effet,<br />

les spécificités du langage C par comparaison au Lisp 3 , nous amènent à nous <strong>de</strong>man<strong>de</strong>r comment<br />

extraire <strong>de</strong> manière <strong>dynamique</strong> les données manipulées par le programme source et plus<br />

particulièrement à quel niveau <strong>de</strong> transformation du programme cela pourrait se faire. De même,<br />

il faut déterminer quels sont les types <strong>de</strong> données à extraire du programme afin d apporter au<br />

développeur une analyse fiable et précise. Enfin, il faut choisir <strong>de</strong> quelle manière représenter<br />

graphiquement l ensemble <strong>de</strong> ces informations <strong>de</strong> manière à avoir une vision claire du<br />

déroulement d un programme.<br />

La section 2.1 ci-<strong>de</strong>ssous traite <strong>de</strong> la question <strong>de</strong> la spécificité du langage C, et présente la solution<br />

choisie pour ce projet. La section suivante 2.2, traite quant à elle du type <strong>de</strong>s données à extraire.<br />

La <strong>de</strong>rnière section 2.3, expose la manière dont les informations extraites sont représentées et la<br />

technique mise en place pour le réaliser.<br />

2.1. Comment extraire <strong>dynamique</strong>ment les<br />

données d un programme source en langage<br />

C ?<br />

Comme nous l avons dit dans le premier chapitre, le projet d analyse <strong>dynamique</strong> <strong>de</strong> programme a<br />

déjà été réalisé pour <strong>de</strong>s programmes écrits en langage Lisp. Ce langage est un langage interprété,<br />

c'est-à-dire que l exécution du programme se résume à un cycle <strong>de</strong> lecture <strong>de</strong>s instructions, ligne<br />

par ligne, puis <strong>de</strong> leur évaluation. Pour analyser <strong>de</strong>s programmes écrits en Lisp il suffit donc <strong>de</strong><br />

modifier l interprète Lisp même, afin <strong>de</strong> lui permettre <strong>de</strong> générer, pendant la lecture et l exécution<br />

<strong>de</strong>s instructions, les données relatives au co<strong>de</strong> à analyser.<br />

Par contre, le langage C est un langage compilé, c'est-à-dire qu exécuter un co<strong>de</strong> source C revient<br />

à le transformer d abord en un programme exécutable (binaire). Les étapes <strong>de</strong> la compilation sont<br />

décrites plus en détail ci-<strong>de</strong>ssous.<br />

2.1.1. Les étapes <strong>de</strong> la compilation <strong>de</strong> GCC<br />

La transformation d un programme C en binaire se déroule en <strong>de</strong>ux étapes indépendantes : le<br />

prétraitement et la compilation proprement dite.<br />

3<br />

Notamment le fait qu il soit compilé plutôt qu interprété.<br />

17

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!