是否可以将汇编语言转换为LLVM IR,优化它然后将其重新编译为不同的架构?如何在IR中处理堆栈中的“推送”和“弹出”?这是我发现的最简单的反对意见,但我确信有这么多的反对意见。
我打算构建一个动态重新编译器,看起来这将是一个很好的解决方案,因为LLVM会自动优化我的新架构代码。 LLVM是否可以实现这一切?
由于
答案 0 :(得分:4)
这是一个类似的问题:Recompile a x86 code with LLVM to some faster one x86
答案是LLVM不能直接执行,但可以作为工具的一部分使用。
答案 1 :(得分:1)
有可能。
但是您需要开发一些代码库LLVM
来实现将汇编语言翻译为LLVM IR
的过程。
然后LLVM
可以帮助您优化和生成新架构。
所以,重点是你需要开发能够将汇编语言翻译成LLVM IR的翻译器。我见过某人已经这样做了,你可以在网站上搜索。
答案 2 :(得分:0)
您可以尝试创建要优化的程序的符号表示形式,然后使用Arybo之类的工具将符号表达式转换为LLVM IR。
Jonathan Salwan在其仓库Tigress_Protection中进行了此操作,他在其中演示了如何使用符号执行和使用工具Triton进行的污点分析来对虚拟机进行模糊处理,以便获得程序的符号表示以及{ {3}},他将符号表达式转换为LLVM IR以便进行一些优化。我想这是一种方法。