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 />

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

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

Saved successfully!

Ooh no, something went wrong!