从后端的 LLVM/clang 中提取基本块/CFG
Posted
技术标签:
【中文标题】从后端的 LLVM/clang 中提取基本块/CFG【英文标题】:Extracting Basic Blocks/CFG from LLVM/clang on the Backend 【发布时间】:2011-02-08 03:52:58 【问题描述】:我已经开始使用 LLVM,我很想知道是否有一种编程方式可以从 LLVM/clang 中提取控制流图和/或基本块,以便对它们进行一些分析。有没有办法挂钩工具链并提取这些信息而不是直接编译?如果没有,有什么替代方案?
【问题讨论】:
【参考方案1】:LLVM 支持插件通道。编写一个 pass 以任何你想要的格式发出你想要的任何数据是很简单的。
但是,LLVM 已经拥有大量的分析和转换通道。在运行所需的分析通道后,您也许可以使用现有的 LLVM 框架来提取所需的数据。
查看docs、code,然后在LLVMdev list 上提出更具体的问题以获得最佳答案。
【讨论】:
【参考方案2】:CFG(控制流图)纯粹是 CLang 的一部分。
CFG 支持访问者(请参阅 CFG.h),但您可能想在 CLang 开发人员列表中询问是否有可用的代码示例。
【讨论】:
以上是关于从后端的 LLVM/clang 中提取基本块/CFG的主要内容,如果未能解决你的问题,请参考以下文章