5

注意:标记为社区 wiki。

LLVM 中的低级虚拟机在哪里?

我看到我们有 llvm-g++ 和 c-lang,但对我来说,LLVM 几乎就像模拟器的 Valgrind 一样,在它上面执行指令,我可以编写程序来检测运行代码/在某些条件下中断发生/等...

像这样基于 LLVM 构建的工具在哪里?

谢谢!

4

2 回答 2

6

我认为您正在寻找 QEMU,而不是 LLVM。

LLVM 中的低级虚拟机是将高级 C 和 C++ 语言输入转换为内部低级表示(作为正常编译过程中的一个阶段),然后可以保存这个低级表示并在 JIT 编译器上执行它(因此有点像虚拟机)。此 JIT 编译器进行了大量优化,因此我预计很难以您正在考虑的形式进行检测 - 特别是,它不会逐条指令逐步执行执行。

相比之下,QEMU 是一个开源仿真器,可以按指令执行机器代码的单步执行。它已经包含一定量的检测代码以查找特定条件的能力,因为它可以连接到 GDB 并设置观察点等,这些都是在 QEMU 本身中实现的。

于 2010-04-13T06:47:56.503 回答
1

要使用 LLVM 运行 x86 代码,您应该检查 libCPU 或过时的 llvm-qemu。

运行x86程序_on_llvm

于 2010-12-17T12:24:29.830 回答