8

我需要将 x86 汇编源代码转换为 LLVM 人类可读的 .ll 文件(又名 LLVM 汇编语言)。我怎样才能做到这一点?如果没有直接的解决方案,是否有可能在 LLVM 基础架构中以尽可能少的努力实现一个?

我想,我正在寻找的解决方案应该是某种llc的对应物,它将 .s 文件转换回 .ll 表示形式。

4

1 回答 1

8

仅针对那些仍在寻求有关此主题的更多信息的人,我想分享有关我在网络上找到的一个正在进行的项目 ( http://dslab.epfl.ch/proj/s2e ) 的信息。该项目有两个组成部分:

  1. x86-to-LLVM 后端,用于将 x86 机器代码动态转换为 LLVM IR
  2. RevGen工具,用于对 x86 二进制文件进行静态分析,能够将内联 x86 程序集转换为 LLVM IR

这是RevGen原型:RevGen 将 x86 二进制文件作为输入,并分三步输出等效的 LLVM 模块。首先,RevGen 查找所有可执行代码块并将它们转换为 LLVM 翻译块。其次,当没有更多的翻译块需要覆盖时,RevGen 将它们转换为基本块,并以 LLVM 格式重建原始二进制文件的控制流图。第三,RevGen 解析外部函数调用以构建最终的 LLVM 模块。对于动态分析,最后一步将 LLVM 模块与允许执行 LLVM 模块的运行时库链接。

于 2012-01-30T06:02:25.050 回答