Примечание: отмеченный как общественная Wiki.
Где Низкоуровневая Виртуальная машина в LLVM?
Я вижу, что у нас есть llvm-g ++ и лязг, но мне, LLVM - что-то почти как Valgrind средства моделирования, где инструкции выполняются на нем, и я могу записать программы для оснащения под управлением кода / прерывание, когда определенные условия происходят / и т.д...
То, где инструменты как это, основывалось на LLVM?
Спасибо!
Думаю, вы ищете QEMU, а не LLVM.
Виртуальная машина нижнего уровня в LLVM состоит в том, что после преобразования входных данных языков C и C ++ более высокого уровня во внутреннее представление нижнего уровня (как этап в обычном процессе компиляции) она может затем сохранить это низкоуровневое представление. представление уровня и выполнить его на JIT-компиляторе (который, таким образом, действует как виртуальная машина). Этот JIT-компилятор выполняет значительную оптимизацию, и поэтому я полагаю, что его будет сложно инструментировать в той форме, о которой вы думаете - в частности, он не выполняет пошаговое выполнение инструкции за инструкцией.
QEMU, напротив, представляет собой эмулятор с открытым исходным кодом, который пошагово выполняет пошаговое выполнение машинного кода. Он уже содержит определенную возможность инструментального кода для поиска определенных условий, в том смысле, что он может подключаться к GDB и устанавливать точки наблюдения и так далее, которые реализованы в самом QEMU.