【发布时间】:2011-01-08 22:23:52
【问题描述】:
是否可以输入 x86 32 位代码来运行 LLVM 编译器?有一个巨大的算法,我没有源代码,我想让它在相同的硬件上运行得更快。我可以通过优化将它从 x86 翻译回 x86。
这段代码运行了很长时间,所以我想对其进行静态重新编译。此外,我可以对其进行运行时配置文件并给 LLVM 提示,哪些分支更有可能。
原始代码是为 x86 + x87 编写的,不使用 SSE/MMX/SSE2。重新编译后它有机会使用 x86_64 和/或 SSE3。此外,代码将以更优化的方式重新生成到硬件解码器。
谢谢。
【问题讨论】:
-
这不是一个答案,但我记得 Amiga 有一些程序可以“优化”为 MC68000 编译的代码,以使其在更新的处理器上运行得更快,但代价是兼容性。但我知道 x86 没有这样的尝试。
-
IMO,您可能有更好的时间使用 IDA & hex-rays 或 Ollydbg 将程序集逆向工程回更高级别的语言(C 或 C++)
-
RevGen 是这里的 x86->LLVM 翻译器之一。它还具有从 x86 到静态二进制文件的翻译器。它使用 Qemu 和修改过的 MIPS TCG,生成 IR。
-
还有dagger.repzret.org - Dagger,can decompile 到 LLVM IR。