我需要将 x86 汇编源代码转换为 LLVM 人类可读的 .ll 文件(又名 LLVM 汇编语言)。我怎样才能做到这一点?如果没有直接的解决方案,是否有可能在 LLVM 基础架构中以尽可能少的努力实现一个?
我想,我正在寻找的解决方案应该是某种llc的对应物,它将 .s 文件转换回 .ll 表示形式。
我需要将 x86 汇编源代码转换为 LLVM 人类可读的 .ll 文件(又名 LLVM 汇编语言)。我怎样才能做到这一点?如果没有直接的解决方案,是否有可能在 LLVM 基础架构中以尽可能少的努力实现一个?
我想,我正在寻找的解决方案应该是某种llc的对应物,它将 .s 文件转换回 .ll 表示形式。
仅针对那些仍在寻求有关此主题的更多信息的人,我想分享有关我在网络上找到的一个正在进行的项目 ( http://dslab.epfl.ch/proj/s2e ) 的信息。该项目有两个组成部分:
这是RevGen原型:RevGen 将 x86 二进制文件作为输入,并分三步输出等效的 LLVM 模块。首先,RevGen 查找所有可执行代码块并将它们转换为 LLVM 翻译块。其次,当没有更多的翻译块需要覆盖时,RevGen 将它们转换为基本块,并以 LLVM 格式重建原始二进制文件的控制流图。第三,RevGen 解析外部函数调用以构建最终的 LLVM 模块。对于动态分析,最后一步将 LLVM 模块与允许执行 LLVM 模块的运行时库链接。