osg*_*sgx 16 x86 llvm recompile
是否可以使用x86 32位代码的输入运行LLVM编译器?有一个庞大的算法,我没有源代码,我想让它在相同的硬件上运行得更快.我可以通过优化将它从x86转换回x86.
这段代码运行时间很长,所以我想对它进行静态重新编译.此外,我可以执行它的运行时配置文件并提供LLVM提示,哪些分支更可能.
原始代码是为x86 + x87编写的,不使用SSE/MMX/SSE2.重新编译后,它有机会使用x86_64和/或SSE3.此外,代码将以更优化的方式再生到硬件解码器.
谢谢.
Ric*_*ton 12
LLVM无法开箱即用.您必须将x86二进制文件写入LLVM中间表示(IR)转换器.那将是一项非常重要的任务.如果x86代码足够简单,它可能会非常接近地映射到IR,但是某些x86指令不会直接映射,例如堆栈指针操作.
编辑:您也可以考虑尝试类似于QEMU的方法.QEMU在运行时翻译二进制文件,当我运行PowerPC代码时,每个基本块在执行之前都会被转换为X86代码.您可以弄清楚如何将目标文件分解为基本块并为每个块生成LLVM IR,丢弃内容(如参数传递等)并用直接LLVM IR替换它.
不过,这仍然是一项艰巨的工作.从头开始重写算法可能更容易.
"使用QEMU动态转换x86到LLVM"中描述了这个精确的过程
| 归档时间: |
|
| 查看次数: |
4690 次 |
| 最近记录: |