这是因为 I 依赖着 I 的数据；对于冒险2，则是因为 I 依赖着即将被 I 所覆盖的数据；对于冒险3，则是因为在 I 和 I 之间所运行的指令可能会使用到 I 的输出结果。为了确保这些数据依赖所需的运行顺序得到保证，编译器首先需要建立一幅依赖图，即一幅顶点是指令，而边是依赖性的有向图。最终，这幅图的任何一种拓扑排序都可以是有效的指令调度表。
算法.寻找拓扑排序最简单且常见的算法是列表调度法，其基本概念是不断将依赖图的某个源抽出，并将其添加到现有指令调度表上。在此过程中变成源的其他