November 10, 2023
客户
该客户是一家知名公司,试图创建一个二进制转换器,用于将二进制代码转换为LLVM中间表示(IR),专门用于特定的后端编译。这是在将所述二进制文件转换为目标体系结构时提高兼容性所必需的。
问题与挑战
- 本机体系结构:并非所有库和应用程序都具有适用于所有体系结构的本机版本。
- 兼容性问题:为了在不重新编译代码的情况下提高兼容性,需要一个将二进制文件转换为目标体系结构的解决方案。
MulticoreWare的优势和方法
MulticoreWare构建了LLVM-MCTOLL,这是一个开源工具,可以静态地(AOT)将二进制文件转换(或提升)为LLVM IR,后者可以使用目标后端构建。该工具支持的平台是Ubuntu,支持的输入三元组包括x86_64、ARM32和RISC-V(部分)。用于该工具的技术主要是编译器IR和汇编。
PROCESS WORKFLOW
查找有关我们工具的更多信息:单击此处
结果
我们还向该客户提供了额外的功能,例如:
- 函数代码分析: 我们帮助发现函数原型,并帮助识别基于分支指令的函数条目。我们根据堆栈参数提取了参数列表,并从返回操作中确定了返回类型。
- 堆栈框架抽象:我们能够分析函数的序言和尾声,并删除堆栈调整操作。
- 带有跳转表的Switch语句: 我们识别了Switch代码块并提取了跳转表。
| 三部分的 | VarArgs | FuncProto | StackFrame | JumpTables | SharedLibs | C++ |
|---|---|---|---|---|---|---|
| x86_64-linux | X | X | X | X | X | |
| arm-linux | X | X | X | X | X |
结论
这个案例研究强调了MulticoreWare的专业知识如何有效地促进二进制代码转换为LLVM IR,为特定的后端定制。
要更全面地了解MulticoreWare的LLVM-MCTOLL,请联系我们info@multicorewareinc.com
