引言

什么是可用表达式和活跃变量?假设有如下代码:

int main()
{int a=1,b=2,c=1;int x=a+b+b+b+b;int y=a+b+b+b+b;int z=a+b+b+b+b;return 0;
}

可用表达式:
举例来说,a+b+b+b+b就是可用表达式,如果不加以优化,其将被计算三次,太浪费了,所以编译优化过程要求发现这个可用表达式。
活跃变量:
举例来说,a,b就是活跃变量,c是不活跃变量,前者叫做live,后者叫做dead。


上面只是直观的理解了以下,下面是书中的概念。

可用表达式

相关定义:


例子。

对上面的解释,产生b+c是因为,b+c被计算过,所以可能后面有地方会用到,所以要产生b+c,在这个程序点会认为这个表达式时可用表达式,接下来由于b被赋值改变了,所以原来的b+c肯定对后面没用了,所以注销。(注意,红色的是我自己加的,我觉得是这样。)

对于一般的情况,例子如下:

注意:下面是我个人的看法,我感觉上述有点问题:

程序化的可用表达式计算为:


活跃变量


例子:我们在每条指令之前做活跃分析。
有:

同样,一般地,我们有:

程序化的可用表达式计算为:

到达定值





数据流分析:可用表达式的计算+活跃变量计算+到达定值。相关推荐

  1. 【编译原理笔记18】代码优化:活跃变量分析,可用表达式分析

    本次笔记内容: 8-8 活跃变量分析 8-9 可用表达式分析 本节课幻灯片,见于我的 GitHub 仓库:第18讲 代码优化_3.pdf 文章目录 活跃变量分析 活跃变量 例:各基本块的出口处的活跃变 ...

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

    本次笔记内容: 8-5 数据流分析 8-6 到达定值分析 8-7 到达定值方程的计算 本节课幻灯片,见于我的 GitHub 仓库:第17讲 代码优化_2.pdf 文章目录 数据流分析 数据流分析(da ...

  3. 如何通过SPSS的计算新变量功能,挖掘新洞察

    IBM SPSS Statistics的计算新变量功能,可通过为现有变量创建数字表达式来获得新的计算变量,从而挖掘到更深层次的洞察内容.比如通过构建单价与数量的数字表达式,获得一个新的总价计算变量. ...

  4. chatgpt赋能python:Python加法表达式,快速简便的计算方式

    Python加法表达式,快速简便的计算方式 介绍 Python是一种可读性强.简洁.易于学习的编程语言,同时也是一种高级编程语言,由于其简洁性和可读性,越来越多的程序员们选择Python作为他们的工作 ...

  5. python——变量的类型、不同类型变量的计算、变量的输入以及格式化输出

    变量的类型 在 python 中定义变量是不需要指定类型(在其他很多高级语言中都需要) 数据类型可以分为数字型.非数字型 数字型:整型(int).浮点型(float). 布尔型(bool): 真 Tr ...

  6. 1.3编程基础之算术表达式与顺序执行 02 计算(a+b)*c的值

    http://noi.openjudge.cn/ch0103/02/ #include <iostream> #include <bits/stdc++.h> using na ...

  7. 1.3编程基础之算术表达式与顺序执行 03 计算(a+b) c的值

    http://noi.openjudge.cn/ch0103/01/ #include <bits/stdc++.h> using namespace std; int main() {i ...

  8. 1.3编程基础之算术表达式与顺序执行 05 计算分数的浮点数值

    #include <iostream> using namespace std; int main() {int a,b;cin>>a>>b;printf(&quo ...

  9. JS——基础知识--变量类型和变量计算

    提问: JS中使用typeof能得到的哪些类型 何时使用===何时使用== JS中有哪些内置函数 JS变量按照存储方式区分为哪些类型,并描述其特点 如何理解JSON 涉及知识点:(1)变量类型 值类型 ...

最新文章

  1. python3 dict 转 json 不ascii转码 去除空格
  2. python拼接两个数组_在Python中连接两个数组
  3. k8s往secret里导入证书_k8s中secret解析
  4. jsp判断json第一位_java 判断字符串是否为json格式
  5. [深入浅出WP8.1(Runtime)]浮出控件(Flyout)
  6. 这种一毛钱值多少钱?
  7. GDI+ 绘制多行文本,自动换行。
  8. ubuntu14.04中卸载cuda、cudnn
  9. Apache+tomcat集群
  10. Mac 开机没声音了?只需 2 招关闭/恢复
  11. Redhat5.2yum源更新为centos源
  12. 10款精选的后台管理系统,收藏吧!
  13. java jre 配置_JRE的安装及环境变量配置
  14. 湖北省大数据发展行动计划(2016-2020年)
  15. 走进音视频的世界——新一代开源编解码器AV1
  16. 联想拯救者y7000电池耗电快_联想拯救者Y7000游戏本测评之温度、续航双测评
  17. RGB颜色值与十六进制颜色码
  18. ICS验厂辅导,ICS认证与BSCI认证的不同点主要体现在那方面
  19. 两台win 7系统电脑 一台双网卡 共享上网
  20. java 递归 尾递归_递归和尾递归

热门文章

  1. iOS通关书单,Android可入
  2. 用DCGAN训练并生成自己的图像集(含tensorflow代码)
  3. 我自己可以挖矿了!使用Ethereum C++客户端Aleth建一个私有网络,并使用Remix部署一个智能合约
  4. NeurIPS 2021 | 寻找用于变分布泛化的隐式因果因子
  5. 用人工智能打击人工智能
  6. 2D图片3秒变立体,Adobe实习生的智能景深算法,登上顶级期刊
  7. 干货 | 清华大学郑方:语音技术用于身份认证的理论与实践
  8. 精选10大机器学习开源项目 !(附链接)
  9. 手把手教你搭建AI开发环境 !(附代码、下载地址)
  10. 华人小哥控诉机器学习「四大Boring」,CS博士:深有同感,正打算退学