Principles of Program Analysis -- 可用表达式分析

目录

可用表达式分析 available expressions analysis

例子

静态分析框架

什么是计算

副作用分析

形式化

求值

结论

课后作业

编程作业


本文将通过一个简单的例子来体现静态分析的应用.

可用表达式分析 available expressions analysis

可用表达式分析指的是在没一个程序点,哪个表达式在所有到达此处的路径上已经被计算过了且没有修改. 如果被计算过了,那么我们可以复用原值. 英文说明在此处.

例子

\large [x:=a+b]^1; [y:=a*b]^2; while\ [y>a+b]^3 do ([a:=a+1]^4;[x:=a+b]^5)

以上程序, \large (a+b)的值在程序点3的位置都是不需要计算的. 因为未进入while循环之前, 其值在1处被计算. 进入循环之后,其值在5处被计算. 那就意味着,编译器可以在程序点3复用以前的值,从而优化程序.

静态分析框架

什么是计算

首先,我们来探讨一下计算. 我修的是计算科学, 到底计算机科学的根本问题是什么呢? 其实就是计算问题. 无论什么编程语言, 使用他们的最终目的都是为了计算. 操作系统也是,都是为了计算提供便利.

但是,在编程语言理论中,有一点有趣的就是,有些计算是有副作用的. 比如你在堆上分配了一个变量,然后函数调用不小心修改了它,以致后来出现了bug.这就是副作用的例子之一. 关于计算的入门会在后来的博客话题"类型和效果(type and effect systems)"中介绍.

副作用分析

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值