数据流分析之绪论

数据流分析之绪论

引言

在前面那篇文章中我们大概讲述了一个编译器如何将源程序一步一步处理变为目标程序,其中有一个步骤为代码优化。优化可以让目标程序变得‘更好’,代码优化分为局部优化全局优化两类。局部优化为基本块本身内部优化,是基本块之内的改进。而全局优化是对多个基本块进行优化,检查信息是如何在一个程序的过分基本块之间流动。而大部分全局优化是基于数据流分析技术实现的。

小知识

基本块介绍

基本块是满足以下条件的最大的连续三地址序列(中间代码划分而为)。
1. 只有一个入口,表示程序中不会有其它任何地方能通过jump跳转类指令进入到此基本块中。
2. 只有一个出口,表示程序只有最后一条指令能导致进入到其它基本块去执行。

基本块意味着只要第一条指令被执行了,那么基本块内所有执行都会按照顺序仅执行一次。

什么是数据流分析

我们先看看龙书和虎书中的定义。

数据流分析指的是一组用来获取有关数据如何沿着程序执行路径流动的相关信息的技术. 《编译原理》
数据流分析的目的是提供一个过程(或一大段程序)如何操纵其数据的全局信息. 《高级编译器设计与实现》

我们可以看到两个关键字——数据程序

你可能感兴趣的:(编译原理)