Где находится виртуальная машина в LLVM? - PullRequest
5 голосов
/ 13 апреля 2010

Примечание: помечено как вики сообщества.

Где находится виртуальная машина низкого уровня в LLVM?

Я вижу, что у нас есть llvm-g ++ и c-lang, но для меня LLVM - это что-то вроде симулятора Valgrind, где на нем выполняются инструкции, и я могу писать программы для инструментирования выполняющегося кода / прерывания когда происходят определенные условия / и т.д ...

Где инструменты, подобные этим, построены на LLVM?

Спасибо!

Ответы [ 2 ]

5 голосов
/ 13 апреля 2010

Я думаю, что вы ищете QEMU, а не LLVM.

Виртуальная машина низкого уровня в LLVM заключается в том, что после преобразования входных данных языка C и C ++ более высокого уровня во внутреннее низкоуровневое представление (как этап в обычном процессе компиляции) она может сохранить этот низкоуровневый файл. представление уровня и выполнение его на JIT-компиляторе (который, таким образом, действует как виртуальная машина). Этот JIT-компилятор выполняет значительную часть оптимизации, и поэтому я ожидаю, что будет трудно использовать инструмент в той форме, о которой вы думаете - в частности, он не выполняет пошаговые инструкции при выполнении.

QEMU, напротив, является эмулятором с открытым исходным кодом, который выполняет пошаговые инструкции машинного кода. Он уже содержит определенную способность кода инструмента искать определенные условия, поскольку он может подключаться к GDB и устанавливать точки наблюдения и т. Д., Которые реализованы в самом QEMU.

1 голос
/ 17 декабря 2010

Чтобы использовать LLVM для запуска кода x86, вы должны проверить libCPU или устаревшую версию llvm-qemu.

Посмотрите на запущенную программу x86 _on_ llvm

...