注意:标记为社区 wiki。
LLVM 中的低级虚拟机在哪里?
我看到我们有 llvm-g++ 和 c-lang,但对我来说,LLVM 几乎就像模拟器的 Valgrind 一样,在它上面执行指令,我可以编写程序来检测运行代码/在某些条件下中断发生/等...
像这样基于 LLVM 构建的工具在哪里?
谢谢!
注意:标记为社区 wiki。
LLVM 中的低级虚拟机在哪里?
我看到我们有 llvm-g++ 和 c-lang,但对我来说,LLVM 几乎就像模拟器的 Valgrind 一样,在它上面执行指令,我可以编写程序来检测运行代码/在某些条件下中断发生/等...
像这样基于 LLVM 构建的工具在哪里?
谢谢!
我认为您正在寻找 QEMU,而不是 LLVM。
LLVM 中的低级虚拟机是将高级 C 和 C++ 语言输入转换为内部低级表示(作为正常编译过程中的一个阶段),然后可以保存这个低级表示并在 JIT 编译器上执行它(因此有点像虚拟机)。此 JIT 编译器进行了大量优化,因此我预计很难以您正在考虑的形式进行检测 - 特别是,它不会逐条指令逐步执行执行。
相比之下,QEMU 是一个开源仿真器,可以按指令执行机器代码的单步执行。它已经包含一定量的检测代码以查找特定条件的能力,因为它可以连接到 GDB 并设置观察点等,这些都是在 QEMU 本身中实现的。
要使用 LLVM 运行 x86 代码,您应该检查 libCPU 或过时的 llvm-qemu。