【发布时间】:2014-08-18 14:18:25
【问题描述】:
我正在拼命寻找一种在汇编中获取控制流图的方法。我有用 C 编写的源代码,处理器是 x86。我已经查看了 gcc 的文档,它确实提供了仅 gimple 和 rtl 格式的 cfg。知道如何以汇编格式获取它吗?
【问题讨论】:
-
“获取汇编中的控制流图”是什么意思? CFG 是一组与动作相关的节点,以及这些节点之间的条件转移弧。装配不是 CFG。您到底在寻找什么,为什么要以这种形式出现?提供示例。
-
我特别在寻找具有包含汇编代码的基本块的 CFG,而不是 gcc -fdump-tree-gimple 提供的 gimple 格式。类似于 (debasish.in/2014/02/…) 的输出,但静态基于高级源代码,而不是二进制的动态执行。
-
简而言之,就是 GCC 生成的 .s 的 CFG。
-
我假设(没有特定的 GCC 知识)RTL 仍然包含控制流信息。既然它可能包含抽象的、低级的机器操作,那为什么还不够呢?你没有回答你为什么想要这个。 (您总是可以解析 .s 文件,并从中构建控制流,模间接函数调用)。
-
我想对一些开源程序的控制流图做一些分析,间接分支对我来说很重要。我根本无法将它们排除在控制流之外。
标签: gcc assembly x86 control-flow-graph