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