问题标签 [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 回答
156 浏览

compiler-construction - 控制流图优势

我正在为个人项目研究编译器,为此我正在查看英国一所大学的一些论文。我偶然发现的问题之一如下:

这怎么可能?如果使用不受定义支配,这意味着使用 x 的块将 x 超出范围?我没有正确地看它吗?

说我们有

1:int y = 2;

2:如果(y > 0)

3: 整数 x = 5;

4:否则x++;

在这种情况下,x的使用不受定义支配,但x不在范围内,所以不能使用。我不明白...

0 投票
1 回答
1062 浏览

iphone - 闭源 iPhone 应用的静态分析工具

我正在寻找可用于对闭源 iPhone 应用程序进行静态分析的工具或工具组合。我对构建这些应用程序的控制流图很感兴趣。所以我正在考虑做以下事情:

  • 如果需要,解密应用程序
  • 反编译/反汇编应用程序(例如,Android 中的等效工具将是:反编译 Android 应用程序
  • 从反汇编的源代码构建控制流图(同样,对于 Android,我可以使用SOOT之类的工具,它适用于反汇编 Android 应用程序后获得的 Java 文件)

我遇到了以下工具,但我不确定其中哪一个是合适的。

拆卸:

  • Interactive Disassembler - 一些研究项目报告使用它,但现在它是商业化的。
  • Hopper - 不确定这是否可以以汇编语言以外的格式产生输出

对于静态分析:

我的问题是:上述两组工具的正确组合应该是什么,以便反汇编程序的输出可以用作静态分析器的输入?

注意:与此类似的一个问题是Objective-C 静态分析工具——Xcode 的插件?. 但重点是可以与 Xcode 一起使用的工具,因此对编写 iPhone 应用程序的开发人员很有用。但是,我对可用于分析源代码可能不可用的 iPhone 应用程序的工具很感兴趣。

0 投票
1 回答
1971 浏览

compiler-construction - 如何获取一个程序的过程间控制流图并使用llvm对其进行数据流分析?

在 llvm 中,我知道每个函数的 CFG(控制流图)都已构建,并且 CFG 由基本功能块之间的关系表示。但是我想遍历一个程序的全局 CFG,其中包括 llvm 中的许多功能。如何获取一个程序的过程间CFG,然后对其进行数据流分析?

0 投票
0 回答
177 浏览

llvm - 遍历 CFG 并计算路径的运行平均值

我正在对 LLVM 机器代码 CFG(删除后边缘的 CFG)进行分析,对于我附加的 CFG 上的每条指令(我们称之为成本),我想计算 CFG 路径的运行平均值总计如果运行平均值超过某个阈值(CostThreshould),W 指令的平均窗口的成本然后我想打印发生这种情况的 BasicBlock,例如计算 CFG 上的每条路径超过 1000 条指令的运行平均成本是多少,如果某个路径的平均值大于 7,则打印路径的最后一个基本块。 在这个分析中,我删除了图的所有后边,所以 CFG 应该是 DAG 有没有一种有效的方法来计算这个?

0 投票
1 回答
829 浏览

llvm - 如何在 LLVM 中找到基本块的后继 ID?

我正在尝试遍历函数中的所有基本块。但是,我需要找到每个基本块的唯一标识符,以便以后可以引用它。

是否有提供块名称/ID 的 LLVM API?

谢谢

0 投票
2 回答
425 浏览

if-statement - 是否可以使用 if 和 while 将所有控制流图转换回来?

我想知道从单个方法(不允许递归)的典型JVM 字节码(请参阅如何)获得的所有控制流图是否可以转换回等效的 s 和s 代码。ifwhile

如果不是,那么最小的 JVM 字节码序列不能被翻译回ifs 和whiles 是什么?

0 投票
2 回答
1057 浏览

ios - Objective-C 的调用图或控制流图(iOS 应用程序)

是否有适用于 iOS 应用程序的 Objective-C 的调用图和/或控制流图生成器?

调用图 - http://en.wikipedia.org/wiki/Call_graph 调用图提供了程序的跨过程视图。在调用图中,两个节点 f 和 g 之间的边: f --> g 表示子程序 f 调用子程序 g 的事实。

控制流图 - http://en.wikipedia.org/wiki/Control_flow_graph

一些允许我使用一些 API/代码访问图表的静态工具?有没有办法为 iOS 应用程序生成调用图?甚至记录 iPhone 应用程序为任何用户交互事件调用的所有方法的名称。

0 投票
2 回答
1213 浏览

android - Android APK或Android源码的控制流分析

我想对需要创建 CFG 的 android 应用程序进行控制和数据流分析。我已经尝试过 soot 来实现它,但我得到的只是 jimple 和其他中级中间语言代码。如何用烟灰制作 CFG,即使我以某种方式得到它,谁能指出我如何以编程方式分析它。

0 投票
1 回答
1229 浏览

gcc - 获取汇编中的控制流图

我正在拼命寻找一种方法来获得汇编中的控制流图。我有用 C 编写的源代码,处理器是 x86。我已经查看了 gcc 的文档,它确实提供了仅 gimple 和 rtl 格式的 cfg。知道如何以汇编格式获取它吗?

0 投票
1 回答
589 浏览

gcc - 可视化 GCC 生成的 RTL 控制流图

我有很多使用 gcc 的 -fdump-rtl-all 标志的输出,我想知道如何可视化这些 cfg 文件。