问题标签 [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.
gcc - 区分 GCC 的 RTL 转储中的调用/跳转类型
我已经获得了 RTL 格式的 gcc 控制流图转储,并使用 graphviz 对其进行了可视化。然而,目前还不清楚哪些跳转/调用是直接的,哪些是间接的。有什么建议可以区分它们吗?
testing - 如何获取数据流图以及 C 代码的 c-use 和 p-use 变量?
是否有任何在线工具/软件(首选开源)可以制作 C 代码的数据流图并在其中提供 p-use 和 c-use 变量。
parsing - 如何以编程方式将 Java 代码(方法)解析为控制流图
是否有任何 API 或参考库可用于将 java 代码或 java 方法解析为控制流图 (CFG)。我试图将 AST 转换为 CFG,但无法使用AST Parser进行转换,但没有找到任何方法。我正在研究 Eclipse IDE JAVA (J2SE)。
请帮忙。
llvm - 使用 LLVM 为整个源代码生成 CFG
LLVM 社区的任何人都知道是否有一种方法可以为整个输入源代码生成 CFG opt -dot-cfg foo.ll(.bc)
?由于这个生成每个函数的 CFG,因此函数之间的连接将被忽略。
旧的分析工具似乎已经贬值了。
c - 比较反汇编和 C 控制流程的工具
有没有工具可以比较一些反汇编和一些C的控制流?
这是我的情况:我从函数的反汇编(x86_64)开始。在一些 C 代码中,我尝试在 Hopper.app 提供的反编译帮助下创建具有相同功能的函数。我想确保我的 C 代码准确地重新创建了反汇编的功能(对于所有可能的输入和全局状态)。我希望可以比较控制流图。
根据本文的摘要,该领域已经有一些工作,至少在 Java 的上下文中是这样。
是否有任何可用的工具来生成和比较用于反汇编的控制流图?理想情况下,我可以比较我开始的反汇编的控制流和我提出的 C 代码,但是比较我开始的反汇编的控制流和我可以从我的 C 代码生成的反汇编的控制流会仍然很棒。
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.
abstract-syntax-tree - 英特尔的 icc 编译器能否生成 AST、CFG 和/或 IR?
使用 clang 时,我发现检查它生成的抽象语法树 (AST)、控制流图 (CFG) 和 LLVM IR 很有用。
我已经开始查看英特尔的 icc 编译器(版本 15.0.2),但我找不到任何文档告诉我是否/如何让它产生相同的工件。
我发现最接近的是它可以生成胖链接时间对象,其中包含 IR 等。但是,我没有看到任何暗示 IR 是为了让用户理解的东西。
有谁知道是否有办法从 icc 获取这些工件?
eclipse - 如何从 Scala 代码生成控制流图?
我想看看 Scala 编译器生成的控制流图。有没有办法这样做?我尝试在线搜索,但只找到了适用于 Java 的 Eclipse 插件,例如来自 www.drgarbage.com 的插件,但没有找到适用于 Scala 的插件。
谢谢
编辑:我获取了由 scalac 生成的 .class 文件,并使用 dr 垃圾插件打开该文件,以查看可视化为控制流图的字节码。但是 scalac 生成了 3 个不同的 .class 文件:Foo、Foo$ 和 Foo$delayedInit$body。我看到一堆不连贯的图,而 Foo$ 中只有一个图看起来是合理的。我尝试在线搜索 3 个 .class 文件之间的区别,但找不到任何东西。
graph-algorithm - 控制流图 - 找到所有线性独立的路径
我想在 CFG 中找到所有可能的线性独立路径。根据我对算法的有限了解,CFG 本质上是一个包含循环的有向图。圈复杂度的公式很简单。我想知道是否有办法获得从开始到结束节点的所有线性独立路径(由圈复杂度给出)
谢谢!
static-analysis - 如何在控制流图中包含子例程调用?
我得到了控制流图的想法;它涉及的节点是基本块(总是发生的操作序列),由代表跳跃的边连接。
但是你如何表示一个子程序调用呢?
如果我有两个这样的功能:
使用这两个函数调用do_something()
,那么我需要一种方法来允许从一个块跳转tweedledee
到do_something
然后另一个跳转回tweedledee
,以及从一个块跳转tweedledum
到do_something
然后返回到tweedledum
,但是从来没有从到跳转tweedledee
到do_something
然后跳转到tweedledum
。(或tweedledum
→ do_something
→ tweedledee
)所以看起来一个普通的有向图不足以定义这些关系......也许我错过了一些东西。