我需要将 x86 汇编源代码转换为 LLVM 人类可读的 .ll 文件(又名 LLVM 汇编语言)。我怎样才能做到这一点?如果没有直接的解决方案,是否有可能以尽可能少的努力在 LLVM 基础设施中实现一个解决方案?
我想,我正在寻找的解决方案应该是某种llc的对应部分,将 .s 文件转换回 .ll 表示形式。
对于那些仍在寻找有关此主题的更多信息的人,我想分享有关一个正在进行的项目的信息(http://dslab.epfl.ch/proj/s2e)是我在网上找到的。该项目有两个组成部分:
-
x86 到 LLVM 后端用于将 x86 机器代码动态转换为 LLVM IR
-
RevGen用于 x86 二进制文件静态分析的工具,能够将内联 x86 程序集转换为 LLVM IR
Here is RevGen原型:
RevGen 将 x86 二进制文件作为输入,并通过三个步骤输出等效的 LLVM 模块。首先,RevGen 查找所有可执行代码块并将它们转换为 LLVM 翻译块。其次,当没有更多的翻译块需要覆盖时,RevGen 将它们转换为基本块,并以 LLVM 格式重建原始二进制文件的控制流图。第三,RevGen 解析外部函数调用以构建最终的 LLVM 模块。对于动态分析,最后一步将 LLVM 模块与允许执行 LLVM 模块的运行时库链接起来。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)