是否可以将汇编语言翻译为 LLVM IR,对其进行优化,然后将其重新编译为不同的架构?

Is it possible to translate an assembly language to LLVM IR, optimize it and then recompile it to a different architecture?

是否可以将汇编语言翻译为 LLVM IR,对其进行优化,然后将其重新编译为不同的架构?您将如何处理 IR 中堆栈上的"push"和"pop"?这是我发现的最简单的反对意见,但我敢肯定有很多这样的反对意见。

我正计划构建一个动态重新编译器,这似乎是一个很好的解决方案,因为 LLVM 会针对新架构自动优化我的代码。使用 LLVM 这一切都可能吗?

谢谢


这是一个类似的问题:Recompile a x86 code with LLVM to some faster one x86

答案是 LLVM 不能直接做,但可以作为工具的一部分来做。


有可能。

但是您需要开发一些 LLVM 代码库来实现将汇编语言转换为 LLVM IR 的过程。然后 LLVM 可以帮助您优化和生成新架构。

所以,关键是您需要开发可以将汇编语言翻译成 LLVM IR 的翻译器。我看到有人已经这样做了,你可以在网站上搜索。


您可以尝试创建要优化的程序的符号表示,然后使用 Arybo 等工具将符号表达式转换为 LLVM IR。

Jonathan Salwan 在他的存储库 Tigress_Protection 中做到了这一点,他演示了如何使用符号执行和污点分析对虚拟机进行反混淆,使用他的工具 Triton 以获得程序的符号表示,并使用 Arybo,将符号表达式转换为 LLVM IR 为了应用一些优化。我想这是一种方法。