问题标签 [control-flow-graph]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
356 浏览

gcc - 区分 GCC 的 RTL 转储中的调用/跳转类型

我已经获得了 RTL 格式的 gcc 控制流图转储,并使用 graphviz 对其进行了可视化。然而,目前还不清楚哪些跳转/调用是直接的,哪些是间接的。有什么建议可以区分它们吗?

0 投票
1 回答
295 浏览

testing - 如何获取数据流图以及 C 代码的 c-use 和 p-use 变量?

是否有任何在线工具/软件(首选开源)可以制作 C 代码的数据流图并在其中提供 p-use 和 c-use 变量。

0 投票
2 回答
1548 浏览

parsing - 如何以编程方式将 Java 代码(方法)解析为控制流图

是否有任何 API 或参考库可用于将 java 代码或 java 方法解析为控制流图 (CFG)。我试图将 AST 转换为 CFG,但无法使用AST Parser进行转换,但没有找到任何方法。我正在研究 Eclipse IDE JAVA (J2SE)。
请帮忙。

0 投票
1 回答
2467 浏览

llvm - 使用 LLVM 为整个源代码生成 CFG

LLVM 社区的任何人都知道是否有一种方法可以为整个输入源代码生成 CFG opt -dot-cfg foo.ll(.bc)?由于这个生成每个函数的 CFG,因此函数之间的连接将被忽略。

旧的分析工具似乎已经贬值了。

0 投票
0 回答
470 浏览

c - 比较反汇编和 C 控制流程的工具

有没有工具可以比较一些反汇编和一些C的控制流?

这是我的情况:我从函数的反汇编(x86_64)开始。在一些 C 代码中,我尝试在 Hopper.app 提供的反编译帮助下创建具有相同功能的函数。我想确保我的 C 代码准确地重新创建了反汇编的功能(对于所有可能的输入和全局状态)。我希望可以比较控制流图。

根据本文的摘要,该领域已经有一些工作,至少在 Java 的上下文中是这样。

是否有任何可用的工具来生成和比较用于反汇编的控制流图?理想情况下,我可以比较我开始的反汇编的控制流和我提出的 C 代码,但是比较我开始的反汇编的控制流和我可以从我的 C 代码生成的反汇编的控制流会仍然很棒。

0 投票
1 回答
1447 浏览

tbb - What's the difference between data flow graph and dependence graph in TBB

I have read about data flow graph and dependence graph from the Intel TBB Tutorial, and feel a bit confusing about these two concepts.

Can I say that the key difference between data flow graph and dependence graph is whether there are explicitly shared resources or not?

But it seems that we can implement a dependence graph using function_node with pseudo messages, or implement a data flow graph using continue_node with shared global variables.

0 投票
0 回答
150 浏览

abstract-syntax-tree - 英特尔的 icc 编译器能否生成 AST、CFG 和/或 IR?

使用 clang 时,我发现检查它生成的抽象语法树 (AST)、控制流图 (CFG) 和 LLVM IR 很有用。

我已经开始查看英特尔的 icc 编译器(版本 15.0.2),但我找不到任何文档告诉我是否/如何让它产生相同的工件。

我发现最接近的是它可以生成胖链接时间对象,其中包含 IR 等。但是,我没有看到任何暗示 IR 是为了让用户理解的东西。

有谁知道是否有办法从 icc 获取这些工件?

0 投票
2 回答
706 浏览

eclipse - 如何从 Scala 代码生成控制流图?

我想看看 Scala 编译器生成的控制流图。有没有办法这样做?我尝试在线搜索,但只找到了适用于 Java 的 Eclipse 插件,例如来自 www.drgarbage.com 的插件,但没有找到适用于 Scala 的插件。

谢谢

编辑:我获取了由 scalac 生成的 .class 文件,并使用 dr 垃圾插件打开该文件,以查看可视化为控制流图的字节码。但是 scalac 生成了 3 个不同的 .class 文件:Foo、Foo$ 和 Foo$delayedInit$body。我看到一堆不连贯的图,而 Foo$ 中只有一个图看起来是合理的。我尝试在线搜索 3 个 .class 文件之间的区别,但找不到任何东西。

0 投票
0 回答
1007 浏览

graph-algorithm - 控制流图 - 找到所有线性独立的路径

我想在 CFG 中找到所有可能的线性独立路径。根据我对算法的有限了解,CFG 本质上是一个包含循环的有向图。圈复杂度的公式很简单。我想知道是否有办法获得从开始到结束节点的所有线性独立路径(由圈复杂度给出)

谢谢!

0 投票
1 回答
829 浏览

static-analysis - 如何在控制流图中包含子例程调用?

我得到了控制流图的想法;它涉及的节点是基本块(总是发生的操作序列),由代表跳跃的边连接。

但是你如何表示一个子程序调用呢?

如果我有两个这样的功能:

使用这两个函数调用do_something(),那么我需要一种方法来允许从一个块跳转tweedledeedo_something然后另一个跳转回tweedledee,以及从一个块跳转tweedledumdo_something然后返回到tweedledum,但是从来没有从到跳转tweedledeedo_something然后跳转到tweedledum。(或tweedledumdo_somethingtweedledee)所以看起来一个普通的有向图不足以定义这些关系......也许我错过了一些东西。