📜  Compiler 中的数据流分析

📅  最后修改于: 2021-09-28 11:06:55             🧑  作者: Mango

它是对控制流图中数据流向的分析,即确定程序中有关数据定义和使用的信息的分析。借助此分析可以完成优化。一般而言,其使用数据流分析计算值的过程。数据流属性表示可用于优化的信息。

基本术语 –

  • 定义点:包含某些定义的程序中的一个点。
  • 参考点:程序中包含对数据项的引用的点。
  • 评估点:包含表达式评估的程序中的一个点。

数据流属性 –

  • 可用表达式——一个表达式被称为在程序点 x 沿着它到达 x 的路径可用。表达式在其评估点可用。
    如果在使用之前没有任何操作数被修改,则称表达式 a+b 可用。

    例子 –

    优势 –
    它用于消除常见的子表达式。

  • 到达定义——如果存在从 D 到 x 的路径,其中 D 未被杀死,即未被重新定义,则定义 D 到达点 x。

    例子 –

    优势 –
    它用于常量和变量传播。

  • 活变量——如果从 p 到结束变量在重新定义之前被使用,则变量在某个点 p 是活的,否则它变成死的。

    例子 –

    优势 –

    1. 它对寄存器分配很有用。
    2. 它用于消除死代码。
  • 繁忙的表达式——一个表达式在一条路径上是繁忙的,如果它的计算存在于这条路径上,并且它的操作数定义在沿着路径计算之前不存在。

    优势 –
    它用于执行代码移动优化。