Mechanized Formal Semantics and Verified Compilation for C++ Objects

Résumé : C++ est un des langages de programmation les plus utilisés en pratique, y compris pour le logiciel embarqué critique. C'est pourquoi la vérication de programmes écrits en C++ devient intéressante, en particulier via l'utilisation de méthodes formelles. Pour cela, il est nécessaire de se fonder sur une sémantique formelle de C++. De plus, une telle sémantique formelle peut être validée en la prenant comme base pour la spécication et la preuve d'un compilateur C++ réaliste, afin d'établir la confiance dans les techniques usuelles des compilateurs C++. Dans cette thèse, nous nous focalisons sur le modèle objet de C++. Nous proposons une sémantique formelle de l'héritage multiple en C++ comprenant les structures imbriquées à la C, sur laquelle s'appuie notre étude de la représentation concrète des objets avec optimisations des bases vides, à travers des conditions suffisantes que nous prouvons correctes vis-à-vis des accès aux champs et des opérations polymorphes. Puis nous spécifions un algorithme de représentation en mémoire fondé sur l'ABI pour Itanium, et une extension de cet algorithme avec optimisations des champs vides, et nous prouvons qu'ils satisfont nos conditions. Nous obtenons alors un compilateur vérifié et réaliste d'un sous-ensemble de C++ vers un langage à trois adresses et accès mémoire de bas niveau. Rajoutant à notre sémantique la construction et la destruction d'objets, nous étudions leurs interactions avec l'héritage multiple. Cela nous permet de formaliser la gestion de ressources, notamment le principe RAII (resource acquisition is initialization) via l'ordre de construction et destruction des sous-objets. Nous étudions aussi les effets sur les opérations polymorphes telles que la sélection de fonction virtuelle pendant la construction et la destruction, en généralisant la notion de type dynamique. Nous obtenons alors un compilateur vérifié pour notre sémantique étendue, notamment en prouvant la correction de l'implémentation des changements de types dynamiques. Toutes nos spécifications et preuves sont formalisées en Coq.
Type de document :
Thèse
Programming Languages [cs.PL]. Université Paris-Diderot - Paris VII, 2012. English. <NNT : 2012PA077001>
Liste complète des métadonnées

https://tel.archives-ouvertes.fr/tel-00769044
Contributeur : Xavier Leroy <>
Soumis le : jeudi 27 décembre 2012 - 18:32:06
Dernière modification le : lundi 5 octobre 2015 - 16:59:06
Document(s) archivé(s) le : jeudi 28 mars 2013 - 03:48:46

Identifiants

  • HAL Id : tel-00769044, version 1

Collections

Citation

Tahina Ramananandro. Mechanized Formal Semantics and Verified Compilation for C++ Objects. Programming Languages [cs.PL]. Université Paris-Diderot - Paris VII, 2012. English. <NNT : 2012PA077001>. <tel-00769044>

Partager

Métriques

Consultations de
la notice

285

Téléchargements du document

225