我做了很多研究,以找出如何从源代码为应用程序创建DFG。DFG在线可用于某些应用程序,例如MP3解码器,JPEG压缩和H.263解码器。
我一直无法弄清楚如何从源代码为HEVC之类的应用程序创建DFG?是否有任何工具可以立即为此类复杂的应用程序生成数据流程图,还是必须手动完成?
请将此事告知我。
编辑:我将Doxygen用于HEVC,我可以看到不同的功能之间如何交互。但是,每个函数都有许多入口和出口点,过一段时间后,Doxygen的输出变得混乱不堪。
我还看了看StreamIt:http ://camlunity.ru/swap/Library/Conflux/Stream%20Programming/streamit- cc_stream_graph_programming_language.pdf
它似乎很方便,但是它为更简单的应用程序(如MP3解码器)生成的图形太复杂了。为了生成一致的DFG,我是否需要重写整个源代码?
您想从任意语言中提取数据流图。您暗示您想要一种单一的方法。手动操作不可行… 您需要一个工具。
这样的工具很难构建。
为此,对于每种语言,您必须能够:
这些任务本身都很困难,因为语言往往很复杂。大多数可以完全做到这一点的语言工具(大多数是编译器)仅针对一种语言的方言做到这一点。
要针对多种语言/方言执行此操作,您需要一种可以针对每种语言的所有详细信息进行配置的工具,并且必须针对所有感兴趣的语言进行配置。[实际上,您不能“全部完成”;现在有成千上万种计算机语言正在使用]。
即使将自己限制为“日常”通用编程语言,这也需要 大量 工作。对于一种主流语言,要花好几年才能做到所有这些。您将无法成功完成此任务。
我公司构建了一个旨在实现此目的的统一工具:DMS软件再造工具包。简单的“秘密”是要认识到,完成上述任务所需的机制实际上在各种语言中都是非常相似的,并且可以设计成以相对适度(并不意味着“小的”)的努力针对特定语言进行配置。
经过由博士级别工程师组成的团队进行了 20年的线性 工程之后,我们为各种令人惊讶的语言提供了解析器(即使是很难的),也提供了您正在谈论的C ++类型的完整数据流分析器(请查看此链接以获取相关信息)示例),C,COBOL和几乎Java 8。
我不知道还有其他任何统一工具可以帮助您实现理想。在决定我对此一无所知之前,请检查我的简历。(Rascal / MPL有一些野心,但目前它只是一个研究工具;它们根本不使用C或C ++。)我们只是其中的一部分,还有许多语言和与之抗衡的规模战。
[DMS的目标不是数据流分析;那只是垫脚石。它是要进行自动代码转换,这需要数据流分析才能安全正确地进行。
当然,您可能只是希望为每种语言找到一个单独的工具。如果您确实可以获得全套的此类工具,则不会从不同作者那里获得一致的质量或一致的数据流图样式/粒度。