|
知识路径: > 计算机系统基础知识 > 计算机软件知识 > 程序设计语言和语言处理程序知识 > 汇编、编译、解释系统的基础知识和基本工作原理 > 编译程序的基本原理 >
|
相关知识点:6个
|
|
|
|
|
局部优化是在基本块上的优化。基本块是指程序中一个顺序执行的语句序列,其中只有一个入口和一个出口。划分基本块的方法如下。
|
|
|
|
(2)对每一入口语句,构造其所属的基本块。它是由该语句到下一入口语句(不包括下一入口语句),或到一条转移语句(包括该转移语句),或到一条停语句(包括该停语句)之间的语句序列组成的。
|
|
|
(3)凡未被纳入某一基本块的语句,都是程序中控制流程无法到达的语句,因而也是不会被执行到的语句,因此可以把它们删除。
|
|
|
一个基本块可以用一个DAG(有向无环)图表示。在一个基本块内,通常可进行以下3种优化,即合并已知量、删除无用赋值和删除多余运算。
|
|
|
|
|
一个程序的控制流图是一个有向图,其节点是程序中的基本块,它有唯一的首节点,即包含程序第一条语句的基本块,从首节点出发,到控制流图中的每个节点都存在路径。
|
|
|
由程序的各基本块构造相应控制流图的方法是:对于程序中的两个基本块Bi和Bj,若Bj紧接着Bi被执行,则从Bi引一条有向边到Bj,称Bi是Bj的直接前驱,Bj是Bi的直接后继。
|
|
|
|
循环就是控制流图中具有唯一入口节点的强连通子图,从循环外进入循环时,必须首先经过循环的入口节点。
|
|
|
基于循环的优化处理有代码外提、强度削弱、删除归纳变量等。
|
|
|