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

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

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

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

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

Спасибо!


person Community    schedule 13.04.2010    source источник


Ответы (2)


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

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

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

person Community    schedule 13.04.2010

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

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

person Community    schedule 17.12.2010