ESI LCSI SEPTEMBRE 2010
Université de Versailles Laboratoire PriSM
Sujet PFE (SIQ)
« Conception et réalisation d’un outil de désassemblage et une interface MAKS-MAQAO-binairy codes »
Proposé par : Lamia Djoudi
Co-encadrant : Chebieb [email protected]
Le travail accompli par le compilateur consiste à adapter l’organisation des calculs et l’utilisation des données de l’application pour exploiter au mieux une architecture.
Pour cela il dispose de transformations de code. La difficulté majeure de la conception d’un compilateur consiste à définir une stratégie capable de déterminer quelles transformations appliquer et avec quels paramètres. Les techniques actuelles appliquent généralement une suite de transformations dans un ordre prédéfini. Cependant l’interaction des transformations entre elles est un phénomène complexe à deux égards :
– l’application successive de plusieurs transformations fait apparaître des conflits qui ne permettent pas d’exploiter la totalité de leur potentiel.
– le choix de l’application d’une optimisation à un fragment de code a des répercussions sur les performances globales de l’application et donc sur les optimisations appliquées à d’autres fragments.
Dans tous les cas, l’enchaînement compliqué des phases d’optimisation et leur paramétrage obscur font que le programmeur considère le compilateur essentiellement comme une boite noire ne pouvant garantir de manière fiable un niveau maximal de performances. Et la seule façon de garantir, en l’absence de compilation à la volée, que les transformations du programmeur sont préservées sur le code exécutable est de les faire sur le code assembleur.
Notre but est le désassemblage des codes binaires afin de les analyser avec l’outil MAQAO et proposer une meilleure optimisation. Ce désassemblage nécessite la réalisation d’une interface entre tout binaire généré par un compilateur in-order et MAQAO
Objectifs de stage:
1- Conception et réalisation d’un outil de désassemblage qui permet à MAQAO d’analyser le code assembleur généré par le désassemblage.
2- L’interface MAQAO-binary doit connaitre tout binaire généré par un compilateur intégré dans MAQAO
3- Un lien entre les lignes binaire-assembleur-source doit être fait
4- Tester tout les modules de MAQAO avec les fichiers désassemblés.
5- Sauvegardés tout les résultats des applications testées.
Déroulement du stage
La première phase sera consacrée à la mise en main de MAQAO. Cette phase nécessite la maitrise des architectures des compilateurs integrés dans l’infrastructure MAKS-MAQAO, l’optimisation des applications et la théorie de compilation Ensuite l’interface et l’outil de désassemblage seront établis.