在llvm上运行x86程序

在llvm上运行x86程序,x86,llvm,X86,Llvm,可以使用llvm运行x86程序吗?也就是说,我想使用llvm作为x86模拟器来运行x86程序,然后对x86程序进行测试 谢谢 我想你在找 它有(嗯,目前实际上只有8086个,这还不完全,但他们正在开发),而且由于它是在LLVM之上构建的,它显然也有一个x86后端,因此可以在x86上运行x86,但要经过LLVM的优化、检测和分析阶段。,有一个在qemu中使用LLVM的项目。它也是通过LLVM运行x86代码的一种方式 这是GSoC项目,但svn中有一个代码,作者有以下结果: regular qem

可以使用llvm运行x86程序吗?也就是说,我想使用llvm作为x86模拟器来运行x86程序,然后对x86程序进行测试


谢谢

我想你在找


它有(嗯,目前实际上只有8086个,这还不完全,但他们正在开发),而且由于它是在LLVM之上构建的,它显然也有一个x86后端,因此可以在x86上运行x86,但要经过LLVM的优化、检测和分析阶段。

,有一个在qemu中使用LLVM的项目。它也是通过LLVM运行x86代码的一种方式

这是GSoC项目,但svn中有一个代码,作者有以下结果:

regular qemu     llvm-qemu rle,dse,simple regalloc   llvm-qemu full opts
4m35.349s             5m39.697s                        13m50.697s

llvm qemu的速度是qemu的两倍,但它可以工作。

我不知道libCPU,但有
libx86
,它做的事情非常相似;如果在32位x86处理器上运行(但不是在64位模式下),它将运行一个虚拟8086进程,如果在其他地方运行,它将尝试在软件中模拟
8086
。很酷。不过,文档相对较少


引用查尔斯·巴贝奇(Charles Babbage)的话,“我无法正确理解可能引发这样一个问题的思想混乱。”这是一个伟大的问题!事实上,我在几周前读到了关于LibCPU的文章,但我完全忘记了它。这个问题促使我回头再看一次。谢谢显然,这是一种优化qemu的方法。我猜,它被放弃的原因是因为这些令人沮丧的结果。