使用 LLVM 进行源到源编译

发布于 2024-12-29 04:51:38 字数 1539 浏览 0 评论 0原文

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

分分钟 2025-01-05 04:51:38

对于那些仍在寻求有关此主题的更多信息的人,我想分享有关一个正在进行的项目的信息 (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 模块的运行时库链接起来。

Just for those who are still seeking for more information on this topic, I want to share the information about one ongoing project (http://dslab.epfl.ch/proj/s2e) that I've found on the web. The project has two components:

  1. x86-to-LLVM backend for dynamic translation of x86 machine code to LLVM IR
  2. RevGen tool for static analysis of x86 binaries, capable of translating inline x86 assembly to LLVM IR

Here is RevGen prototype:
RevGen takes as input an x86 binary and outputs an equivalent LLVM module in three steps. First, RevGen looks for all executable blocks of code and converts them to LLVM translation blocks. Second, when there are no more translation blocks to cover, RevGen transforms them into basic blocks and rebuilds the control flow graph of the original binary in LLVM format. Third, RevGen resolves external function calls to build the final LLVM module. For dynamic analysis, a last step links the LLVM module with a run-time library that allows the execution of the LLVM module.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文