⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 9.4.5_2.htm

📁 建立《编译原理网络课程》的目的不仅使学生掌握构造编译程序的原理和技术
💻 HTM
字号:
<html>

<head>
<title>编译原理</title>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<link type="text/css" rel="stylesheet" href="../css/specification.css">
</head>

<BODY>

<table align=right width=300>
<tr>
<td><img src="../images/previous.gif" onmouseover="javascript:style.cursor='hand'" onclick="vbscript:window.location.href='9.4.5.htm'" ></td>
<td>
<img src="../images/next.gif" onmouseover="javascript:style.cursor='hand'" onclick="vbscript:window.location.href='9.5.0.htm'" ></img></td>
</tr>
</table>
<br><br>

<font class="title2"><b>9.4.5 归约流图(续)</b></font>  
<table>
<tr>
<td>&nbsp&nbsp&nbsp&nbsp</td>
<td class="content">
<font class="example">例9.10 </font>
在图9.23的流图中,1是开始结点。判断流图是否是可归约流图。<br>
</td>
</tr>
</table>

<p align="center">
<img border="0" src="images/9_21.gif"><br>
</p>

<table>
<tr>
<td>&nbsp&nbsp&nbsp&nbsp</td>
<td class="content">
<p>
对循环分析来说,可归约流图的关键性质是我们非形式地称为<font class = "emphasize2">循环的结点集合必须含一个回边。</font>事实上,为了找出流图可归约的程序的所有循环,只要寻找<font class = "emphasize2">回边的自然循环。</font>
</span><br>


</td>
</tr>
</table>

<table>
<tr>
<td>&nbsp&nbsp&nbsp&nbsp</td>
<td class="content">
<p>
例9.10中,流图中似乎有由结点2和3构成的"循环",但是这个循环有两个首结点2和3,所以不是可归约流图。这使得许多代码优化技术,如代码外提和归纳变量删除,不能直接运用。幸好,这样的不可归约控制流结构在大多数程序里面几乎不出现。
</p>
</td>
</tr>
</table>
<br>
<table>
<tr>
<td>&nbsp&nbsp&nbsp&nbsp</td>
<td class="content">

<p><img border="0" src="images/9_16.gif">&nbsp </p>

<table>
<tr>
<td>&nbsp;&nbsp;&nbsp;&nbsp;</td>
<td class="content">
<font class="example">例9.11</font>

 回到图9.16所示的流图,可看出仅有的“内循环”是{7.8,10},是回边10→7的自然循环。集合{4,5,6,7,8,10}是7→4的自然循环。(注意8和10可经10→7到达7。)直观看上去,{4,5,6,7}是一个循环,这是错的,因为4和7都是入口点,违反了循环只有一个入口的要求。从 另一角度说,没有理由认为控制会环绕着结点集合{4,5,6,7}消耗较多的时间,完全有可能控制从7到8的次数多于从7到4的次数。把8和10包含在这个循环里,我们可确信已分离了程序频繁执行的一个区域。 
</span></p>
<p>
应该认识到,作出分支频率的假设是危险的。例如,若把循环{7,8,10}的不变语句移出8或10,而事实上,控制沿边7→4比沿7→8更经常。那么,实际上我们增加了被移动语句的执行次数。在9.7节我们将讨论避免这个问题的方法。 </span></p>
<p>
下一个较大的循环是{3,4,5,6,7,8,10},它是回边4→3和8→3的自然循环。同前面一样,如果把{3,4}看成循环违反了一个入口点的要求。最后一个循环是回边9→1的自然循环,它是整个流图。</span></p>
</td>
</tr>
</table>

<br>
<table align=right width=300>
<tr>
<td>
<img src="../images/previous.gif" onmouseover="javascript:style.cursor='hand'" onclick="vbscript:window.location.href='9.4.5.htm'" ></img></td>
<td><img src="../images/next.gif" onmouseover="javascript:style.cursor='hand'" onclick="vbscript:window.location.href='9.5.0.htm'" ></td>
</tr>
</table>

</BODY>
<html><script language="JavaScript">

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -