Spelling suggestions: "subject:"interpréteur."" "subject:"interpréter.""
1 |
Modélisation de programmes C en expressions régulièresMahbouli, Hatem 17 April 2018 (has links)
L’analyse statique des programmes est une technique de vérification qui permet de statuer si un programme est conforme à une propriété donnée. Pour l’atteinte de cet objectif, il faudrait disposer d’une abstraction du programme à vérifier et d’une définition des propriétés. Dans la mesure où l’outil de vérification prend place dans un cadre algébrique, la définition des propriétés ainsi que la modélisation du programme sont représentées sous la forme d’expressions régulières. Ce mémoire traite en premier lieu de la traduction des programmes écrits en langage C vers une abstraction sous forme d’expressions régulières. La méthode de traduction proposée, ainsi que les différentes étapes de transformations y sont exposées. Les premiers chapitres du présent mémoire énoncent les connaissances élémentaires de la théorie des langages ainsi que de la compilation des programmes. Un bref aperçu des différentes méthodes de vérification des programmes est présenté comme une mise en contexte. Finalement, la dernière partie concerne la traduction des programmes ainsi que la description de l’outil de traduction qui a été réalisé.
|
2 |
Etendre des interpréteurs par détournement, ou comment étendre des interpréteurs sans en modifier le code : avec une application à des analyses dynamiques pour un interpréteur de JavaScript / Extending interpreters by diverting, or how to extend interpreters without modifying their source codeMarchand De Kerchove, Florent 18 November 2016 (has links)
Afin de sécuriser les applications web, nous nous sommes intéressés à appliquer des analyses dynamiques de sécurité à des programmes JavaScript. Dansce contexte, pouvoir rapidement modifier l’interpréteur et composer des analyses à l’exécution est primordial. Une façon d’effectuer ces changements aurait été parrefactorisation. Mais la refactorisation peut être délicate et chronophage, car elle implique de réécrire des parties du code source, voire de réorganiser toute l’architecture du programme. La refactorisation est trop coûteuse lorsque prime la vitesse d’itération.Nous explorons une alternative économe à la refactorisation : le détournement. Détourner un programme c’est changer ses résultats sans directement modifierson code source. Pour détourner un programme, on exploite des techniques d’indirection, tels que la portée dynamique et la métaprogrammation.On commence par passer en revue les techniques utilisées pour des problèmes connexes d’extensibilité, et on applique ces techniques pour détourner des interpréteurs simples. Puis, on montre comment le détournement peut aider à construire un interpréteur par incréments, pour permettre d’activer dynamiquement des comportements alternatifs. Enfin, on applique ces techniques pour détourner un véritable interpréteur JavaScript par de multiples analyses dynamiques de sécurité.Au prix d’un potentiel impact en efficacité et en sûreté, détourner l’interpréteur est à la fois plus rapide et plus flexible que de le réécrire, ce qui fait du détournement une alternative légitime à la refactorisation. / For securing web applications, we were interested in applying dynamic security analyses to JavaScript programs. In this context, the ability to quickly modify the interpreter and to compose analyses at runtime is paramount. One way to effect these changes would have been through refactoring. But refactoring can be tricky and time-consuming, as it entails to rewrite parts of the source code, and even to reorganize the program’s whole architecture. Refactoring is too costly when rapid iteration is preferred.We explore a lightweight alternative to refactoring: diverting. To divert a program is to change its results without directly modifying its source code. To divert a program, we leverage indirection techniques such as dynamic scoping and metaprogramming.We first review the techniques used in related extensibility problems, like the Expression Problem, and apply these techniques to divert simple interpreters. We then show how diverting can help build interpreters incrementally in layers, allowing dynamic activation of alternative behavior. Finally, we apply those techniques to divert a full-blown JavaScript interpreter with multiple dynamic security analyses. We find that, with potential costs in efficiency and program safety, diverting is both faster and more flexible than rewriting the interpreter,thus making diverting a legitimate alternative to refactoring.
|
Page generated in 0.0614 seconds