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 6 - Exemples <strong>de</strong> résultats<br />
N ous avons vu au long <strong>de</strong>s chapitres précé<strong>de</strong>nts <strong>de</strong>s extraits <strong>de</strong> graphes <strong>de</strong> dépendances<br />
<strong>dynamique</strong>s <strong>de</strong> données générés suivant le modèle <strong>de</strong> graphes <strong>de</strong> dépendances <strong>de</strong> l outil<br />
DDFgraph pour le le langage Lisp (cf. chapitre 1). Ce chapitre, présente les résultats que nous<br />
obtenons grâce à la technique <strong>de</strong> génération <strong>de</strong> graphe décrite dans le chapitre précé<strong>de</strong>nt, qui<br />
présente les données <strong>de</strong> manière différente que pour le modèle suivi. Nous voyons dans ce<br />
chapitre les résultats <strong>de</strong> graphes <strong>dynamique</strong>s <strong>de</strong> dépendances entre données obtenus pour<br />
quelques exemples <strong>de</strong> programmes manipulant <strong>de</strong>s variables entières. Nous présentons ces<br />
résulats par ordre croissant <strong>de</strong> complexité.<br />
6.1. Opérations sur <strong>de</strong>s variables entières<br />
Nous prenons pour premier exemple le fichier « ext_affvar1.c », qui effectue <strong>de</strong> simples opérations<br />
sur <strong>de</strong>s valeurs entières, retournant la valeur d une <strong>de</strong>s variables manipulées en fin <strong>de</strong> programme.<br />
1 /* ext_affvar1.c */<br />
2 int g;<br />
3 int main()<br />
4 {<br />
5 int x,y,a,b;<br />
6 x = 12;<br />
7 y = 8;<br />
8 g = 15;<br />
9 a = x + y;<br />
10 x = a - g;<br />
11 a ++;<br />
12 return a;<br />
13 }<br />
Nous pouvons voir sur la figure 24 le graphe <strong>de</strong> dépendances<br />
<strong>dynamique</strong> <strong>de</strong>s variables entières manipulées par le programme<br />
source. Nous avons ajouté, pour une meilleure lecture du graphe,<br />
près <strong>de</strong> chaque n ud définissant une variable, le symbole<br />
correspondant à l i<strong>de</strong>ntifiant <strong>de</strong> celle-ci 22 .<br />
En observant le graphe <strong>de</strong> plus près, nous pouvosn remarquer que<br />
la variable b n est pas affichée sur le graphe, ceci est expliqué par le<br />
fait que cette <strong>de</strong>rnière n est pas manipulée pendant l exécution du<br />
programme. Nous pouvons ainsi voir sur ce graphe les<br />
dépendances entre les variables, comme par exemple la variable x<br />
est définie en ligne 6 puis sa valeur est utilisée en ligne 9 pour<br />
définir la valeur <strong>de</strong> la variable a, puis elle est encore modifiée en<br />
ligne 10 en prenant une nouvelle valeur issue d une opération sur<br />
les variables a et g.<br />
Par contre il n existe pas <strong>de</strong> lien représenté entre les variables x, y et<br />
g avec la fonction main dans laquelle ils sont définis, ce problème<br />
d affichage est traité dans le chapitre 8.<br />
x<br />
y<br />
a<br />
a<br />
g<br />
x<br />
22<br />
Automatiserle rempalcement <strong>de</strong> l i<strong>de</strong>ntifiant interne <strong>de</strong>s variables par leur<br />
symbole est l une <strong>de</strong> nos perspectives (cf. chapitre 8).<br />
Figure 24. Graphe <strong>de</strong><br />
dépendances <strong>dynamique</strong><br />
60