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 />
4 */<br />
5<br />
6<br />
7 int m;<br />
8<br />
9 int main()<br />
10 {<br />
11 int x,y,a,b,c;<br />
12<br />
13 x = 12;<br />
14 y = 8;<br />
15 m = 15;<br />
16 a = x + y;<br />
17 b = x - y;<br />
18 c = a + b;<br />
19 return c;<br />
20 }<br />
::EiC:: : 5 -> [main]<br />
13.- <br />
Def 1-0 12 13<br />
14.- <br />
Def 1-1 8 14<br />
15.- <br />
Def 0-2 15 15<br />
16.- <br />
Use 1-0 13 16<br />
Use 1-1 14 16<br />
Def 1-2 20 16<br />
17.- <br />
Use 1-0 13 17<br />
Use 1-1 14 17<br />
Def 1-3 4 17<br />
18.- <br />
Use 1-2 16 18<br />
Use 1-3 17 18<br />
Def 1-4 24 18<br />
19.- <br />
Use 1-4 18 19<br />
Notre outil a extrait <strong>de</strong> l exécution <strong>de</strong> ce programme l ensemble <strong>de</strong>s informations manipulées, à<br />
savoir les variables définies et leurs valeurs. On peut voir à la suite du co<strong>de</strong> source le format <strong>de</strong>s<br />
données extraites, on peut y distinguer <strong>de</strong>ux types d informations : Use var l1 l2 et Def var val L.<br />
Quand on a Use var l1 l2 cela signifie que l instruction <strong>de</strong> la ligne l2 utilise la variable var<br />
définie en ligne l1, et quand on a Def var val L cela signifie que l instruction <strong>de</strong> la ligne L définit<br />
la variable var avec la valeur val. Prenons par exemple l instruction <strong>de</strong> la ligne 16 du<br />
programme, dans laquelle on affecte à la variable a la somme <strong>de</strong>s valeurs <strong>de</strong> x et y. Dans les<br />
données extraites on peut voir pour l instruction 16 (surlignée en bleu) les informations suivantes :<br />
- Use 1-0 13 16, signifie que l instruction <strong>de</strong> la ligne 16 utilise la variable nommée « 1-<br />
0 » (qui correspond à x) 1 définie auparavant à la ligne 13 du co<strong>de</strong> source (cf. définition<br />
mise en évi<strong>de</strong>nce dans les informations extraites par le surlignage orange).<br />
- Use 1-1 14 16, signifie que l instruction <strong>de</strong> la ligne 16 utilise la variable nommée « 1-<br />
1 » (qui correspond à y) définie auparavant à la ligne 14 du co<strong>de</strong> source (cf. définition<br />
mise en évi<strong>de</strong>nce dans les informations extraites par le surlignage jaune).<br />
- Def 1-2 20 16, signifie que l instruction <strong>de</strong> la ligne 16 définit la variable « 1-2 », c est-àdire<br />
a, avec la valeur 20, somme <strong>de</strong> 12 pour x et 8 pour y.<br />
Ainsi, le format <strong>de</strong> données extraites aussi appelé base <strong>de</strong> données, est assez abstrait et n est donc<br />
pas adapté pour une lecture humaine. En effet, ce format est conçu <strong>de</strong> manière à décomposer le<br />
co<strong>de</strong> source pour mettre en évi<strong>de</strong>nce les dépendances entre ses données (ici variables), que nous<br />
transformons ensuite en un graphe donné en figure 1, il <strong>de</strong>vrait à terme donner le résultat <strong>de</strong> la<br />
figure 2.<br />
1 Les variables sont désignées actuellement par <strong>de</strong>s i<strong>de</strong>ntifiants (comme ils sont distingués dans l interprète) en<br />
attendant que la correspondance avec la table <strong>de</strong>s symboles soit faite afin <strong>de</strong> récupérer leur nom.<br />
12