VMAD: a Virtual Machine for Advanced Dynamic Analysis of Programs

Abstract : In this paper, we present a virtual machine, VMAD (Virtual Machine for Advanced Dynamic analysis), enabling an efficient implementation of advanced profiling and analysis of programs. VMAD is organized as a sequence of basic operations where external modules associated to specific profiling strategies are dynamically loaded when required. The program binary files handled by VMAD are previously instrumented at compile time to include necessary data, instrumentation instructions and callbacks to the VM. Dynamic information, such as memory locations of launched modules, are patched at startup in the binary file. The LLVM compiler has been extended to automatically instrument programs according to both VMAD and the handled profiling strategies. VMAD's potential is illustrated by presenting a profiling strategy dedicated to loop nests. It collects all memory addresses that are accessed during a selected number of successive iterations of each loop. The collected addresses are consumed by an analysis process trying to interpolate addresses successively accessed through each memory reference as a linear function of some virtual loop indices. This profiling strategy using VMAD has been run on some of the SPEC2006 and Pointer Intensive benchmark suites, showing a very low time overhead, in most cases.
Type de document :
[Research Report] 2010, pp.10
Liste complète des métadonnées

Littérature citée [9 références]  Voir  Masquer  Télécharger

Contributeur : Vincent Loechner <>
Soumis le : jeudi 24 février 2011 - 10:25:56
Dernière modification le : samedi 13 janvier 2018 - 01:03:21
Document(s) archivé(s) le : mercredi 25 mai 2011 - 02:21:40


Fichiers produits par l'(les) auteur(s)


  • HAL Id : inria-00534748, version 1



Alexandra Jimborean, Matthieu Herrmann, Vincent Loechner, Philippe Clauss. VMAD: a Virtual Machine for Advanced Dynamic Analysis of Programs. [Research Report] 2010, pp.10. 〈inria-00534748〉



Consultations de la notice


Téléchargements de fichiers