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.

Chapitre 6 - Exemples <strong>de</strong> résultats<br />

6.3.2. Fonction avec arguments<br />

Nous voyons maintenant comment l appel <strong>de</strong> fonctions avec arguments est représenté<br />

graphiquement, puis ce que l on obtient dans la base <strong>de</strong> données grâce à la version modifiée <strong>de</strong><br />

EiC. L exemple qui suit utilise le programme « foncavcarg.c » qui définit <strong>de</strong>ux variables entières dans<br />

la fonction main(), ces valeurs sont alors passées en argument à la fonction add23().<br />

a<br />

b<br />

x,y<br />

Figure 33. Graphe <strong>de</strong> dépendances<br />

<strong>de</strong> données généré pour le<br />

programme "foncavarg.c".<br />

foncavcarg.c :<br />

# main:1<br />

main 1<br />

# 7:1 <br />

Def 1-0 2 7 1<br />

# 8:1 <br />

Def 1-1 3 8 1<br />

foncavcarg.c<br />

# 9:1 <br />

stoval -3- stoval -2- eiccall<br />

1 int add23 (int x,int y) {<br />

2 return x+y;<br />

3 }<br />

4<br />

5 int main(void) {<br />

6 int a,b;<br />

7 a = 2;<br />

8 b = 3;<br />

9 return add23(2,3);<br />

10 }<br />

Nous pouvons voir sur cet exemple les définitions <strong>de</strong>s<br />

variables a et b <strong>de</strong> la fonction main() aux lignes 7 :1 et 8 :1,<br />

qui sont suivies du premier appel à la fonction add23 en ligne<br />

9:1. Nous pouvons remarquer qu à cette même ligne un n ud<br />

est relié à la fonction Return-1 <strong>de</strong> la ligne 2 du co<strong>de</strong> source et<br />

qui retourne bien la somme <strong>de</strong>s valeurs <strong>de</strong>s arguments à la<br />

fonction add23(). Ainsi, les arguments x et y sont<br />

représentés par un n ud unique : le noeud « #1:629592 »,<br />

dont le 1 signifie que ces variables sont définies en ligne 1 du<br />

co<strong>de</strong> source et le chiffre 629592 correspond au nombre<br />

d appels <strong>de</strong> cette ligne, cette valeur est à priori fausse puisqu il<br />

s agit du premier appel à la fonction add23 définie en ligne 1.<br />

Ceci étant, les liens partant <strong>de</strong> ces variables x et y vers la<br />

fonction Return-1 sont correctement affichés.<br />

En regardant <strong>de</strong> plus près la base <strong>de</strong> données (donnée ci<strong>de</strong>ssous)<br />

générée avec EiC nous pouvons voir que ces <strong>de</strong>ux<br />

variables sont i<strong>de</strong>ntifiées au niveau 1 et numérotées négativement 23 c est-à-dire que la variable x<br />

est i<strong>de</strong>ntifiée par 1- -1 et y par 1- -2 (cf. surlignés en rouge dans la base <strong>de</strong> données) et leurs<br />

valeurs sont transmises à la fonction grâce au co<strong>de</strong> opérateur stoval (cf. surlignés en jaune ci<strong>de</strong>ssous),<br />

comme nous pouvons le voir ici :<br />

foncavcarg.c :<br />

Fonc add23 9 1<br />

# 2:1 <br />

Use 1--1 1 629592 2 1<br />

Use 1--2 1 629592 2 1<br />

Return 5 2 1<br />

[main]<br />

# 9:2 <br />

Return 5 9 2<br />

[::EiC::]<br />

23 Les variables passées en argument à une fonction sont numérotées négativement par EiC.La numérotation<br />

commence par -1 pour le premier argument, -2 pour le suivant et ainsi <strong>de</strong> suite.<br />

68

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

Saved successfully!

Ooh no, something went wrong!