![](https://img-blog.csdnimg.cn/20201014180756724.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
编译原理
面向bug编程
知其然,知其所以然
展开
-
鲸书阅读笔记(七)--------------流图中的循环
前言研究意义:程序需要花费大部分时间来执行循环,改进循环效率的优化有很大的影响。程序分析:如果一个程序不包含任何循环,我们只需要对程序进行一趟扫描就可以得到数据流问题的答案,对于流图中存在的循环,下面介绍几个概念:支配结点、深度优先排序、回边、图的深度和可归约性。本篇对寻找循环以及迭代式数据流分析的速度进行阐述。基本术语支配结点:如果每一条从流图的入口结点到结点n的路径都经...原创 2019-11-07 17:13:36 · 2121 阅读 · 0 评论 -
鲸书阅读笔记-------第八章数据流分析(六)迭代数据流分析(后向)
后向问题的数据流后向问题与前向问题之间存在对偶性。可以将其与基本块的出口相连。后向问题的数据流方程给定的流图G=<N,E>和一个格L,流图G有属于N的入口节点entry和出口结点exit。对所有的B∈N,计算out(B)∈L,其中out(B)表示从B出口时的数据流信息,他们由下面的数据流方程给出:其中,Init表示从过程出口时数据流信息的适当初值,FB()表示与反向...原创 2019-10-29 10:24:18 · 333 阅读 · 0 评论 -
鲸书阅读笔记-------第八章数据流分析(五)迭代数据流分析(前向)
本篇主要内容1.介绍向前分析的迭代实现方法迭代数据流分析假设有一给定的流图G=<N,E>和一个格L,流图G有属于N的入口结点entry和出口结点exit。对于所有的B∈N,计算in(B),Out(B)∈L,其中in(B)表示进入B的入口时的数据流信息,out(B)表示从B出口时的数据流信息。由下面的数据流方程给出:流方程: 其中,Init表示...原创 2019-10-29 09:58:57 · 868 阅读 · 0 评论 -
鲸书阅读笔记-------第八章数据流分析(四)常见数据流问题以及求解方法
本篇介绍1)数据流分析问题归类尺度有哪些2)与程序优化有关的数据流分析问题有哪些,以及格,位向量、数据流方向等描述。3)解决数据流分析的方法有哪些归类尺度1。他们所提供的信息;2. 他们是有关系的还是属性无关的;3.他们使用的格的类型,以及格元素所代表的含义和在这些格上定义的函数4.信息流的方向:按程序执行的方向(向前问题)、程序执行的反方向(后向问题),还是同时两...原创 2019-10-24 14:46:51 · 553 阅读 · 0 评论 -
鲸书阅读笔记-------第八章数据流分析(三):基本概念----格,流函数和不动点
格 1. 数据流分析是通过对一种称为格的代数结构的元素进行运算来完成的。 2. 格的元素代表变量、表达式、或一个过程所有可能执行的其他程序设计结构的抽象性质----这种性质与输入数据值无关,通常也与过程流经的控制流路径无关。 3.格L由值集合和两个运算组成,其中一个运算称为交,L中存在两个唯一的元素,一个称为底(bottom),记作为。另一个称为顶(top)...原创 2019-10-24 10:39:51 · 680 阅读 · 0 评论 -
鲸书阅读笔记-------第八章数据流分析(二):到达---定值分析
本篇通过到达--定值分析来引出数据流分析的过程什么是到达--定值?定值是对某个变量的赋值。 假设变量x的定值为d,如果存在一条紧随在定值d后面的程序点到达某一个程序点p的路径,并且在这条路径上d并没有被“杀死”(也就是说,变量x没有被重新赋值为其他值),我们就说定值到达程序点p。一个编译器能够根据到达定值信息知道变量x在程序点p上的值是否为常量。局部数据流分析和全局数据...原创 2019-10-23 16:21:09 · 1657 阅读 · 0 评论 -
鲸书阅读笔记-------第八章数据流分析(一):基本块和流图
一、什么是数据流分析?数据流分析指的是一组用来获取有关数据如何沿着程序执行路径流动的相关信息的技术。目的:提供一个过程(或一大段程序)如何操作其数据的全局信息。二、基本概念1.基本块形式上,基本块是一个只能从它的第一条指令进入,并从最后一条指令离开的最长的指令序列。基本块的构建:已第一条指令作为一个新的基本块的开始,然后不断把后续的指令加进去,直到碰到一个无条件跳转、条件跳...原创 2019-10-23 10:54:48 · 1514 阅读 · 0 评论