Rim Chaabane. Analyse dynamique de ... - Université Paris 8
Rim Chaabane. Analyse dynamique de ... - Université Paris 8
Rim Chaabane. Analyse dynamique de ... - Université Paris 8
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