Maîtrise d’Informatique

Synthèse et Traduction de Programmes : sujet de J.M. Robson

Juin 1998

Aucuns documents autorisés

1

Je veux un langage où on peut manipuler des pointeurs vers des objets locaux stockés dans la pile mais où de tels pointeurs ne peuvent pas perdurer après la fin de l’exécution du bloc auquel appartiennent les objets. (C’est-à-dire que le pointeur ne peut pas survivre à l’objet.)

1. Proposer des restrictions sur un langage pour garantir ce résultat.

2. Donnez un système d’attributs et de règles de calcul de ces attributs pour déterminer si vos restrictions sont respectées par un program.

2

Une optimisation de code possible est de calculer la valeur d’une expression dès qu’il est certain que cette valeur va être utilisée et si actuellement elle est calculée en deux blocs de base ou plus. Quelles sont les analyses qu’il faut faire à l’intérieur de chaque bloc de base et entre tous les blocs pour trouver de telles expressions ? Esquisser les algorithmes utilisés pour effectuer ces analyses.