目录
可用表达式分析 available expressions analysis
本文将通过一个简单的例子来体现静态分析的应用.
可用表达式分析 available expressions analysis
可用表达式分析指的是在没一个程序点,哪个表达式在所有到达此处的路径上已经被计算过了且没有修改. 如果被计算过了,那么我们可以复用原值. 英文说明在此处.
例子
以上程序, 的值在程序点3的位置都是不需要计算的. 因为未进入while循环之前, 其值在1处被计算. 进入循环之后,其值在5处被计算. 那就意味着,编译器可以在程序点3复用以前的值,从而优化程序.
静态分析框架
什么是计算
首先,我们来探讨一下计算. 我修的是计算科学, 到底计算机科学的根本问题是什么呢? 其实就是计算问题. 无论什么编程语言, 使用他们的最终目的都是为了计算. 操作系统也是,都是为了计算提供便利.
但是,在编程语言理论中,有一点有趣的就是,有些计算是有副作用的. 比如你在堆上分配了一个变量,然后函数调用不小心修改了它,以致后来出现了bug.这就是副作用的例子之一. 关于计算的入门会在后来的博客话题"类型和效果(type and effect systems)"中介绍.