【编译原理笔记17】代码优化:数据流分析,到达定值分析,到达定值方程的计算

本文详细介绍了数据流分析的概念,包括到达定值分析及其主要用途,阐述了“生成”与“杀死”定值的概念,并通过实例解析了到达定值方程的计算过程,为代码优化提供了理论基础。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

本次笔记内容:
8-5 数据流分析
8-6 到达定值分析
8-7 到达定值方程的计算

本节课幻灯片,见于我的 GitHub 仓库:第17讲 代码优化_2.pdf

数据流分析

数据流分析(data-flow analysis)

数据流分析:一组用来获取程序执行路径上的数据流信息的技术。

数据流分析应用:

  • 到达-定值分析(Reaching-Definition Analysis)
  • 活跃变量分析(Live-Variable Analysis)
  • 可用表达式分析(Available-Expression Analysis)

在每一种数据流分析应用中,都会把每个程序点和一个数据流值关联起来。

数据流分析模式

语句的数据流模式

  • I N [ s ] IN[s] IN[s]:语句s之前的数据流值
  • O U T [ s ] OUT[s] OUT[s]: 语句s之后的数据流值
  • f s f_s fs:语句s的传递函数(transfer function)
    • 一个赋值语句s之前和之后的数据流值的关系
    • 传递函数的两种风格
      • 信息沿执行路径前向传播(前向数据流问题)
        O U T [ s ] = f s ( I N [ s ] ) OUT[s] = f_s(IN[s]) OUT[s]=fs(IN[s])
      • 信息沿执行路径逆向传播(逆向数据流问题)
        I N [ s ] = f s ( O U T [ s ] ) IN[s] = f_s(OUT[s]) IN[s]=fs(OUT[s])
  • 基本块中相邻两个语句之间的数据流值的关系
    • 设基本块B由语句 s 1 , s 2 , … , s n s_1, s_2, … , s_n s1,s2,,sn顺序组成,则
      I N
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值