C 指令级调用(依赖)图

C 指令级调用(依赖)图,c,profiling,C,Profiling,我在想。有没有一种工具可以(在C程序上)在程序中的指令级别生成调用图,同时考虑到该指令对其他指令的依赖性?类似于“依赖关系图”,但在程序的指令级别。我采纳了新科尔曼著作第27章的想法(参见第778页的例子),但如果已经有工具可用,我甚至不会尝试破解任何东西。(如果你愿意,第27章是在线的)。感谢您的帮助。如果您从Cormen/Rivest书籍第778页的图27.2中获得灵感,那么它不是通常意义上的调用图。 它是一个调用树,其中节点是函数的执行实例,而不是函数本身。 它是程序特定执行的调用树,详细

我在想。有没有一种工具可以(在C程序上)在程序中的指令级别生成调用图,同时考虑到该指令对其他指令的依赖性?类似于“依赖关系图”,但在程序的指令级别。我采纳了新科尔曼著作第27章的想法(参见第778页的例子),但如果已经有工具可用,我甚至不会尝试破解任何东西。(如果你愿意,第27章是在线的)。感谢您的帮助。

如果您从Cormen/Rivest书籍第778页的图27.2中获得灵感,那么它不是通常意义上的调用图。 它是一个调用树,其中节点是函数的执行实例,而不是函数本身。 它是程序特定执行的调用树,详细说明了每个实例中变量的相关信息以及并行性的相关信息

要获得这样一个完整的调用树,您必须基本上跟踪整个执行过程。使用不同的参数,您将获得不同的跟踪


如果您的总体目标更加明确,那么可能更容易提供帮助。

任何针对C的优化编译器都应该进行这种控制流分析


另一方面,我不知道从中获取图形有多容易(在独立工具的意义上)

您正在尝试进行依赖性分析吗?可能您需要进行拓扑排序。boost图形库具有图形生成功能和各种图形算法,包括拓扑排序。但它完全是C++。您可以将程序的内部表示转储,例如从GCC中选择“<代码> -fDUP树> < /COD>和<代码> -fDUP RTL ALL < /代码>。一些文件将转储在SSA(单一分配表单)中,并且依赖关系将很容易查看。