【发布时间】:2011-11-27 19:13:39
【问题描述】:
是否可以将汇编语言翻译为 LLVM IR,对其进行优化,然后将其重新编译为不同的架构?您将如何处理 IR 中堆栈上的“push”和“pop”?这是我发现的最简单的反对意见,但我敢肯定有很多这样的反对意见。
我正计划构建一个动态重新编译器,这似乎是一个很好的解决方案,因为 LLVM 会自动优化我的代码以适应新架构。 LLVM 这一切都可以实现吗?
谢谢
【问题讨论】:
是否可以将汇编语言翻译为 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 在他的 repo Tigress_Protection 中做到了这一点,他在其中演示了如何使用符号执行和污点分析对虚拟机进行反混淆,使用他的工具 Triton 以获得程序的符号表示,并使用 Arybo,他将符号表达式转换为 LLVM IR 以应用一些优化。我想这是一种方法。
【讨论】: