De la sémantique opérationnelle à la spécification formelle de compilateurs : l'exemple des boucles en Esterel

par Olivier Tardieu

Thèse de doctorat en Informatique, temps réel, robotique et automatique

Sous la direction de Gérard Berry.

Soutenue en 2004

à Paris, ENMP .


  • Résumé

    Esterel est un langage impératif synchrone pour la programmation de systèmes réactifs orientés contrôle. De façon à dériver une description formelle de compilateur Esterel à partir d’une sémantique opérationnelle du langage, nous proposons une nouvelle sémantique qui exclut les exécutions non déterministes. Puis nous nous concentrons sur les problèmes posés par la compilation des boucles. Les primitives du langage à l’exception de l’instruction « pause » s’exécutent sans consommer de temps logique. Par conséquent les boucles peuvent conduire à la répétition instantanée d’un même bloc de code, d’où de possibles blocages (répétition infinie) et des comportements difficiles à implémenter correctement (répétition finie). À l’aide d’une nouvelle instruction de saut non instantané « gotopause » et en combinant analyse statique et réécriture de code, nous spécifions un schéma de compilation des boucles à la fois portable, performant et sûr. Nous démontrons sa correction.

  • Titre traduit

    Loops in Esterel : from Operational Semantics to Formally Specified Compilers


  • Résumé

    Esterel is a synchronous imperative design language for the specification of control-oriented reactive systems. In order to formally derive the specification of an Esterel compiler from the operational semantics of the language, we first describe a new semantics for Esterel that discards non-deterministic executions. Then, we show how to understand and solve the problems in compilers raised by the “loop” construct of Esterel. All primitive instructions except for “pause” execute in zero time. Thus, because of loops, a given piece of code may be executed several times in a single instant, potentially leading to complex (finite loop) or incorrect (infinite loop) behaviors. Using a new non-instantaneous jump instruction called “gotopause”, and combining program rewriting with static analysis techniques, we build a safe code generation scheme for loop structures that rejects incorrect loops and compiles correct loops very efficiently. We formalize and prove the correctness of this scheme.

Consulter en bibliothèque

La version de soutenance existe sous forme papier

Informations

  • Détails : 1 vol. (130 p.)
  • Notes : Publication autorisée par le jury
  • Annexes : Bibliogr. 86 réf.

Où se trouve cette thèse ?

  • Bibliothèque : Mines ParisTech. Bibliothèque.
  • Non disponible pour le PEB
  • Cote : EMS T-CMA-055
  • Bibliothèque : Mines ParisTech. Bibliothèque.
  • Non disponible pour le PEB
  • Cote : 04 TAR
  • Bibliothèque : Mines ParisTech. Bibliothèque.
  • Disponible pour le PEB
Voir dans le Sudoc, catalogue collectif des bibliothèques de l'enseignement supérieur et de la recherche.