Где VM в LLVM?

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

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

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

То, где инструменты как это, основывалось на LLVM?

Спасибо!

5
задан 3 revs, 3 users 100% 14 June 2015 в 10:09
поделиться

1 ответ

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

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

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

5
ответ дан 14 December 2019 в 13:31
поделиться
Другие вопросы по тегам:

Похожие вопросы: