📜  编译器中的数据流分析

📅  最后修改于: 2021-06-28 07:36:01             🧑  作者: Mango

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

基本术语–

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

数据流属性–

  • 可用表达式–表达式在程序点x iff上沿到达x的路径可用。表达式在其评估点可用。
    如果操作数在使用前都没有被修改,则表示表达式a + b可用。

    例子 –

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

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

    例子 –

    优势 –
    它用于恒定和可变传播。

  • 实时变量–如果变量从p到结尾在重新定义之前就已使用,则该变量在p某个点被称为实时变量,否则它将变为无效。

    例子 –

    优势 –

    1. 这对于寄存器分配很有用。
    2. 它用于消除无效代码。
  • 繁忙表达式–如果表达式的计算沿该路径存在,并且该运算符定义在沿路径的计算之前不存在,则该表达式沿路径处于繁忙状态。

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