12.07.2015 Views

Calcul des etats atteignables de programmes Esterel partitionne ...

Calcul des etats atteignables de programmes Esterel partitionne ...

Calcul des etats atteignables de programmes Esterel partitionne ...

SHOW MORE
SHOW LESS
  • No tags were found...

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

78 CHAPITRE 6. MISE EN ŒUVREInstrumentation <strong>de</strong> strlic. Pour construire notre arbre syntaxique, nous avons modifié leprogramme strlic afin qu’il construise l’arbre syntaxique en même temps que la traductionvers le format intermédiaire. Le résultat est un arbre syntaxique représentant le <strong>programmes</strong>ous forme parenthésée conforme à celui présenté à la section 4.1.6.2.2 Construction du graphe à partir du format intermédiaireAprès l’édition <strong>de</strong> lien, un programme <strong>Esterel</strong> est codé par un unique module au formatlc. A partir <strong>de</strong> cette étape, les noms <strong><strong>de</strong>s</strong> signaux et <strong><strong>de</strong>s</strong> registres <strong>de</strong>meurent inchangés jusqu’àleur traduction dans le format circuit. La construction du graphe <strong>de</strong> flot <strong>de</strong> contrôle à partir duformat intermédiaire lié nous permet d’accepter n’importe quel programme <strong>Esterel</strong> compatibleavec la version v5 9x du compilateur, à l’exception <strong><strong>de</strong>s</strong> <strong>programmes</strong> cycliques.En contrepartie <strong>de</strong> cet avantage, le format intermédiaire ne décrit pas complètement la structuredu programme <strong>Esterel</strong> original. Le format intermédiaire décrit un graphe <strong>de</strong> flot <strong>de</strong> contrôledans lequel le contrôle peut se propager <strong>de</strong> trois manières différentes :– Dans les instructions comme la séquence, le test <strong>de</strong> présence ou l’opérateur parallèle,le contrôle se propage par continuation. Le contrôle se propage séquentiellement d’uneinstruction à une autre. Par exemple, dans une instruction present, le test <strong>de</strong> présenced’un signal précè<strong>de</strong> l’activation <strong>de</strong> l’une <strong>de</strong> ses <strong>de</strong>ux branches.– La <strong>de</strong>uxième catégorie est celle <strong><strong>de</strong>s</strong> exceptions dont nous avons choisi <strong>de</strong> ne pas parlerdans la construction du graphe. De notre point <strong>de</strong> vue, nous pouvons considérer que lesexceptions se comportent comme les instructions précé<strong>de</strong>ntes.– Dans les instructions <strong>de</strong> suspension ou <strong>de</strong> préemption comme suspend ou abort (voirsection 2.1), le contrôle se propage par sélection. Le format intermédiaire décrit égalementun arbre appelé arbre <strong>de</strong> sélection dont les noeuds sont <strong><strong>de</strong>s</strong> instructions du programme.Dans l’arbre <strong>de</strong> sélection, le contrôle se propage instantanément <strong><strong>de</strong>s</strong> feuilles vers la racine<strong>de</strong> l’arbre. Par exemple, une instruction abort est codée comme un noeud <strong>de</strong> l’arbre <strong><strong>de</strong>s</strong>élection dont les feuilles sont <strong><strong>de</strong>s</strong> instructions appartenant au corps du abort. L’instructionabort est active dès qu’une <strong>de</strong> ces instructions est active.A partir d’une telle représentation <strong><strong>de</strong>s</strong> <strong>programmes</strong>, il est parfois difficile <strong>de</strong> construire notregraphe <strong>de</strong> flot <strong>de</strong> contrôle tel que nous l’avons défini. Par exemple, la construction <strong>de</strong> notregraphe autour <strong><strong>de</strong>s</strong> instructions present génère <strong><strong>de</strong>s</strong> frontières à la fin <strong>de</strong> chaque branche. Dansle format intermédiaire, la fin <strong>de</strong> chaque branche n’est pas mentionnée explicitement. Pourcontourner cette difficulté, nous avons tout simplement considéré que chaque noeud ayant plusieursprédécesseurs était un noeud marquant la fin d’un test. Les relations d’ordre sur lesfrontières (voir section 4.3) sont également plus difficiles à obtenir. L’ordre induit par la séquenceest donc préservé mais nous n’avons pas été en mesure d’implémenter complètement l’ordre permettantd’ordonner les frontières à l’intérieur <strong><strong>de</strong>s</strong> instructions present.Nous avons implémenté la construction du graphe à partir du format intermédiaire en respectantautant que possible les définitions du chapitre 4. Les détails <strong>de</strong> cette construction nesont pas d’un grand intérêt et ne sont pas donnés dans ce document. Le graphe ainsi construitrespecte ces définitions pour toutes les instruction du langage excepté l’instruction present :l’ordre que nous imposons ne permet pas d’ouvrir toutes les frontières dans une branche avantles frontières dans la <strong>de</strong>uxième. Cette simplification est néanmoins assez satisfaisante pour nousprocurer <strong>de</strong> bons résultats expérimentaux.

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!