c - 如何从汇编代码构建数据依赖图

标签 c gcc compiler-construction llvm code-analysis

我想知道是否有现成的工具可以从一段汇编代码开始构建数据依赖图?

我的目标是:从一组汇编指令(由使用 GCC/LLVM 编译的 C 代码产生)开始,构建一个依赖图,这将有助于分析每个变量如何影响最终结果。

有什么建议可以帮助我实现这一目标吗?现有的编译器能否输出类似的东西或我可以图形化转换的中间表示?

例如如果我们考虑一个简单的加法 D = (A + B)*C,例如:

load R1, Address_of_A
load R2, Address_of_B
load R3, Address_of_C
add  R4, R1, R2
mul  R5, R4, R3  
store R5, Address_of_D

结果可能是这样的:

A ----
      (+)------
B ----         |--------
                       (*)----> D
C ----------------------

最佳答案

Github 上有很多工具可以做到这一点。我建议看看 miasm ,代码是用 Python 编写的,可读性极强。数据流 build 在data_flow.py .

关于c - 如何从汇编代码构建数据依赖图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58171644/

相关文章:

c - 在 C 编程中将当前日期和时间转换为 2 个不同的变量

c - 初始化为空字符串的字符数组元素的值

eclipse - 如何禁用Eclipse编译器

flash - 任何学习 FLASM(Flash 字节码)的好指南?

c - 你如何检测 C 中的 ctrl+D?

c - 为什么 fflush(stdin) 在 while 循环中执行两次以检查 scanf() 输入?

c - 用C语言读写32位wav文件

c - `va_num` 在这个可变参数宏中意味着什么?

我可以将数据推送/弹出到 GCC C 返回堆栈吗?

c# - .Net框架如何实现int到float的转换?