Python:从列表中的项目构建依赖关系图

1 投票
1 回答
501 浏览
提问于 2025-04-18 15:32

我想要在一个列表中的项目(汇编指令)之间建立一个数据依赖图。具体来说,我想要做的是:

我需要从3条连续的汇编指令中提取操作数,并放到一个列表里,然后找出是否存在数据依赖关系。比如说,考虑这3条指令:

[add1 a1, a2, a3] (Format: instruction dest, source, source)
[sub a4, a5, a1]
[add2 a6, a4, a1]

这里的减法指令依赖于加法指令1的结果。同样,加法指令2也依赖于加法指令1和减法指令的结果。我的输出应该能够检测并报告这两种依赖关系(2依赖于1,3依赖于1和2)。我在考虑两种方法:

方法1:提取指令1的结果操作数,然后与指令2和3的源操作数进行比较,再提取指令2的结果操作数,并与指令3的源操作数进行比较。

方法2:构建一棵树,把源操作数当作子节点,把目标操作数当作根节点,然后检查这些节点是否相互连接。

我尝试了方法1,但我在想如何用方法2来实现这个目标。

1 个回答

-1

把指令转换成SSA形式可以在这方面帮助很大,同时也能进行很多基于构建这种图形的优化。而且,从直观上讲,我觉得如果不这样做,你不一定能得到一个有向无环图

撰写回答