Compilation efficace d'un langage déclaratif synchrone : le générateur de code Lustre-V3 - Archive ouverte HAL Accéder directement au contenu
Thèse Année : 1991

Efficient Compilation of a Declarative Synchronous Language:
the Lustre-V3 Code Generator

Compilation efficace d'un langage déclaratif synchrone : le générateur de code Lustre-V3

Pascal Raymond

Résumé

This thesis presents the production of sequential code from the dataflow synchronous language Lustre. The main difficulty comes from the declarative style of the language: there is no explicit control statement in a Lustre program, so the whole control structure must be synthesized by the compiler. This synthesis consists in building a finite automaton by simulating the behaviour of boolean variables. The execution of the resulting code is very efficient: indeed, most of the boolean operations are performed at compile-time. On the other hand, the exhaustive aspect of this method can cause a real explosion of the code size. This problem can be due to the intrinsic complexity of the program source; in such a case, a compromise between execution time and memory size has to be found. But the explosion can also be caused by the building method, which often produces non minimal automata; we thus studied and developed a novel algorithm which always generates minimal automata. This algorithm requires a lot of symbolic manipulations of boolean functions, which were implemented efficiently by using binary decision diagrams.
Ce travail porte sur la production de code séquentiel à partir du langage flot de données synchrone Lustre. La difficulté essentielle provient de l'aspect déclaratif du langage. En effet, il n'y a pas d'instruction de contrôle dans le langage Lustre ; toute la structure de contrôle du code objet doit donc être synthétisée par le compilateur. Cette synthèse consiste à construire un automate fini en simulant exhaustivement le comportement des variables booléennes du programme. Le code produit est particulièrement rapide ; en effet, la plupart des calculs booléens sont effectués une fois pour toute dès la compilation. En contrepartie, l'aspect exhaustif de cette démarche provoque parfois une véritable explosion de la taille du code. Ce problème peut être dû à la complexité intrinsèque du programme source ; il faut dans ce cas chercher un compromis entre rapidité et taille mémoire. Mais l'explosion peut être causée par la méthode de construction, qui produit très souvent des automates non minimaux ; nous avons donc étudié et développé un algorithme original qui construit à coup sûr des automates minimaux. Cet algorithme fait appel à de nombreuses manipulations symboliques de fonctions booléennes, que nous avons pu implémenter efficacement grâce à une représentation basée sur les graphes binaires de décision.
Fichier principal
Vignette du fichier
raymond91.pdf (1.46 Mo) Télécharger le fichier

Dates et versions

tel-00198546 , version 1 (18-12-2007)

Identifiants

  • HAL Id : tel-00198546 , version 1

Citer

Pascal Raymond. Compilation efficace d'un langage déclaratif synchrone : le générateur de code Lustre-V3. Langage de programmation [cs.PL]. Institut National Polytechnique de Grenoble - INPG, 1991. Français. ⟨NNT : ⟩. ⟨tel-00198546⟩
385 Consultations
284 Téléchargements

Partager

Gmail Facebook X LinkedIn More