2010-04-13 2 views
4

Note: marqué comme wiki de la communauté.Où est la machine virtuelle dans LLVM?

Où est la machine virtuelle de bas niveau dans LLVM? Je vois que nous avons llvm-g ++ et c-lang, mais pour moi, un LLVM est un peu comme Valgrind d'un simulateur, où des instructions sont exécutées dessus, et je peux écrire des programmes pour instrumenter le code courant/Interrompre lorsque certaines conditions se produisent/etc ...

Où sont les outils de ce type construits sur LLVM?

Merci!

Répondre

4

Je pense que vous cherchez QEMU, pas LLVM. La machine virtuelle de bas niveau dans LLVM est, après avoir converti l'entrée de langage C et C++ de niveau supérieur en une représentation interne de bas niveau (en tant qu'étape dans le processus de compilation normal), elle peut alors enregistrer cette faible -level représentation et l'exécuter sur un compilateur JIT (qui agit ainsi un peu comme une machine virtuelle). Ce compilateur JIT fait une quantité considérable d'optimisation, et donc je m'attends à ce qu'il soit difficile de l'instrument dans la forme que vous envisagez - en particulier, il ne fait pas l'instruction par instruction en traversant l'exécution.

QEMU, au contraire, est un émulateur open-source qui effectue une instruction par instruction du code machine. Il contient déjà une certaine capacité à coder le code pour rechercher certaines conditions, en ce sens qu'il peut se connecter à GDB et définir des points de surveillance, etc., qui sont implémentés dans QEMU lui-même.

Questions connexes