version 1.52, 2013/03/05 16:26:46
|
version 1.94, 2025/04/15 10:17:51
|
Line 1
|
Line 1
|
/* |
/* |
================================================================================ |
================================================================================ |
RPL/2 (R) version 4.1.13 |
RPL/2 (R) version 4.1.36 |
Copyright (C) 1989-2013 Dr. BERTRAND Joël |
Copyright (C) 1989-2025 Dr. BERTRAND Joël |
|
|
This file is part of RPL/2. |
This file is part of RPL/2. |
|
|
Line 39 static inline void
|
Line 39 static inline void
|
estimation_taille_pile_systeme(struct_processus *s_etat_processus) |
estimation_taille_pile_systeme(struct_processus *s_etat_processus) |
{ |
{ |
(*s_etat_processus).estimation_taille_pile_systeme_tampon = |
(*s_etat_processus).estimation_taille_pile_systeme_tampon = |
((*s_etat_processus).estimation_taille_pile_systeme_tampon * |
(((double) (*s_etat_processus) |
((double) 0.9)) + ((*s_etat_processus) |
.estimation_taille_pile_systeme_tampon) * |
.hauteur_pile_systeme * ((double) 0.1)); |
((double) 0.9)) + (((double) (*s_etat_processus) |
|
.hauteur_pile_systeme) * ((double) 0.1)); |
return; |
return; |
} |
} |
|
|
Line 148 empilement_pile_systeme(struct_processus
|
Line 149 empilement_pile_systeme(struct_processus
|
= (*s_etat_processus).creation_variables_partagees; |
= (*s_etat_processus).creation_variables_partagees; |
(*(*s_etat_processus).l_base_pile_systeme).evaluation_expression = |
(*(*s_etat_processus).l_base_pile_systeme).evaluation_expression = |
d_faux; |
d_faux; |
|
(*(*s_etat_processus).l_base_pile_systeme).debug_programme = |
|
(*s_etat_processus).debug_programme; |
|
|
(*s_etat_processus).erreur_systeme = d_es; |
(*s_etat_processus).erreur_systeme = d_es; |
(*s_etat_processus).creation_variables_statiques = d_faux; |
(*s_etat_processus).creation_variables_statiques = d_faux; |
(*s_etat_processus).creation_variables_partagees = d_faux; |
(*s_etat_processus).creation_variables_partagees = d_faux; |
|
(*s_etat_processus).debug_programme = d_faux; |
|
|
return; |
return; |
} |
} |
Line 222 depilement_pile_systeme(struct_processus
|
Line 226 depilement_pile_systeme(struct_processus
|
|
|
(*s_etat_processus).l_base_pile_systeme = l_nouvelle_base_liste; |
(*s_etat_processus).l_base_pile_systeme = l_nouvelle_base_liste; |
(*s_etat_processus).erreur_systeme = d_es; |
(*s_etat_processus).erreur_systeme = d_es; |
|
(*s_etat_processus).debug_programme = (*l_ancienne_base_liste) |
|
.debug_programme; |
|
|
// On positionne le drapeau de création des variables statiques. |
// On positionne le drapeau de création des variables statiques. |
|
|
Line 302 effacement_pile_systeme(struct_processus
|
Line 308 effacement_pile_systeme(struct_processus
|
void |
void |
trace(struct_processus *s_etat_processus, FILE *flux) |
trace(struct_processus *s_etat_processus, FILE *flux) |
{ |
{ |
int candidat; |
|
int j; |
|
int nb_variables; |
|
|
|
integer8 i; |
integer8 i; |
|
integer8 j; |
|
integer8 candidat; |
integer8 candidat8; |
integer8 candidat8; |
integer8 delta; |
integer8 delta; |
|
integer8 nb_variables; |
|
|
struct_liste_chainee *l_element_expression; |
struct_liste_chainee *l_element_expression; |
|
|
Line 332 trace(struct_processus *s_etat_processus
|
Line 337 trace(struct_processus *s_etat_processus
|
|
|
nb_variables = nombre_variables(s_etat_processus); |
nb_variables = nombre_variables(s_etat_processus); |
|
|
if ((tableau = malloc(nb_variables * sizeof(struct_tableau_variables))) |
if ((tableau = malloc(((size_t) nb_variables) * |
== NULL) |
sizeof(struct_tableau_variables))) == NULL) |
{ |
{ |
(*s_etat_processus).erreur_systeme = d_es_allocation_memoire; |
(*s_etat_processus).erreur_systeme = d_es_allocation_memoire; |
return; |
return; |
Line 348 trace(struct_processus *s_etat_processus
|
Line 353 trace(struct_processus *s_etat_processus
|
|
|
while(l_element_courant != NULL) |
while(l_element_courant != NULL) |
{ |
{ |
fprintf(flux, "%d : address # %016Xh\n", i--, l_element_courant); |
fprintf(flux, "%lld : address # %016Xh\n", i--, l_element_courant); |
|
|
if ((*l_element_courant).creation_variables_statiques == d_vrai) |
if ((*l_element_courant).creation_variables_statiques == d_vrai) |
{ |
{ |
Line 492 trace(struct_processus *s_etat_processus
|
Line 497 trace(struct_processus *s_etat_processus
|
} |
} |
} |
} |
|
|
fprintf(flux, " Level = %d\n", |
fprintf(flux, " Level = %lld\n", |
(*l_element_courant).niveau_courant); |
(long long int) (*l_element_courant).niveau_courant); |
|
|
if (((*l_element_courant).retour_definition == 'Y') || |
if ((*l_element_courant).retour_definition == 'Y') |
((*l_element_courant).origine_routine_evaluation == 'Y')) |
|
{ |
{ |
fprintf(flux, " Return = yes\n"); |
fprintf(flux, " Return = yes\n"); |
|
|
Line 514 trace(struct_processus *s_etat_processus
|
Line 518 trace(struct_processus *s_etat_processus
|
|
|
for(j = 0; j < nb_variables; j++) |
for(j = 0; j < nb_variables; j++) |
{ |
{ |
if (((*(tableau[j].objet)).type == RPN) || |
if (tableau[j].objet != NULL) |
((*(tableau[j].objet)).type == ALG)) |
|
{ |
{ |
l_element_expression = (*(tableau[j].objet)).objet; |
// Variable ni partagée ni statique |
|
if (((*(tableau[j].objet)).type == RPN) || |
while(l_element_expression != NULL) |
((*(tableau[j].objet)).type == ALG)) |
{ |
{ |
if (l_element_expression == (*l_element_courant) |
l_element_expression = |
.pointeur_objet_retour) |
(*(tableau[j].objet)).objet; |
|
|
|
while(l_element_expression != NULL) |
{ |
{ |
candidat = j; |
if (l_element_expression == |
break; |
(*l_element_courant) |
} |
.pointeur_objet_retour) |
|
{ |
|
candidat = j; |
|
break; |
|
} |
|
|
l_element_expression = |
l_element_expression = |
(*l_element_expression).suivant; |
(*l_element_expression).suivant; |
} |
} |
|
|
if (candidat != -1) |
if (candidat != -1) |
{ |
{ |
break; |
break; |
|
} |
} |
} |
} |
} |
} |
} |
Line 571 trace(struct_processus *s_etat_processus
|
Line 581 trace(struct_processus *s_etat_processus
|
} |
} |
else |
else |
{ |
{ |
|
fprintf(flux, " Come from = compiled code\n"); |
fprintf(flux, " = " |
fprintf(flux, " = " |
"optimized definition\n"); |
"optimized definition\n"); |
} |
} |
Line 595 trace(struct_processus *s_etat_processus
|
Line 606 trace(struct_processus *s_etat_processus
|
if ((*(tableau[j].objet)).type == ADR) |
if ((*(tableau[j].objet)).type == ADR) |
{ |
{ |
delta = (*l_element_courant).adresse_retour |
delta = (*l_element_courant).adresse_retour |
- (*((unsigned long *) |
- (*((integer8 *) |
(*(tableau[j].objet)).objet)); |
(*(tableau[j].objet)).objet)); |
|
|
if ((delta >= 0) && (delta < candidat8)) |
if ((delta >= 0) && (delta < candidat8)) |
Line 617 trace(struct_processus *s_etat_processus
|
Line 628 trace(struct_processus *s_etat_processus
|
"unknown definition\n"); |
"unknown definition\n"); |
} |
} |
} |
} |
else |
else if ((*l_element_courant).niveau_courant == 0) |
{ |
{ |
fprintf(flux, "\n"); |
fprintf(flux, "\n"); |
fprintf(flux, " = RPL/2 " |
fprintf(flux, " = RPL/2 " |
"initialization\n"); |
"initialization\n"); |
} |
} |
|
else |
|
{ |
|
fprintf(flux, "\n"); |
|
} |
} |
} |
} |
} |
else |
else |
Line 630 trace(struct_processus *s_etat_processus
|
Line 645 trace(struct_processus *s_etat_processus
|
fprintf(flux, " Return = no\n"); |
fprintf(flux, " Return = no\n"); |
} |
} |
|
|
if ((*l_element_courant).indice_boucle != NULL) |
if (((*l_element_courant).indice_boucle != NULL) && |
|
((*l_element_courant).type_cloture != 'A')) |
{ |
{ |
tampon = formateur(s_etat_processus, 24, |
tampon = formateur(s_etat_processus, 24, |
(*l_element_courant).indice_boucle); |
(*l_element_courant).indice_boucle); |
Line 665 trace(struct_processus *s_etat_processus
|
Line 681 trace(struct_processus *s_etat_processus
|
l_element_courant = (*l_element_courant).suivant; |
l_element_courant = (*l_element_courant).suivant; |
} |
} |
|
|
fprintf(flux, "\n"); |
|
funlockfile(flux); |
funlockfile(flux); |
|
|
free(tableau); |
free(tableau); |