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

📄 8.6.1b.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='8.6.1.htm'"></td>
<td><img src="../images/next.gif" onmouseover="javascript:style.cursor='hand'" onclick="vbscript:window.location.href='8.6.1_2.htm'"></img></td>
</tr>
</table>
<br><br>

<table><tr><td>&nbsp&nbsp&nbsp&nbsp</td>
<td class="content" >
<P><font class="example"><img border="0" src="images/dingyi.gif">例8.5</font>&nbsp;&nbsp;&nbsp;&nbsp;图8.9是相应于图8.8的三地址代码中的基本块B<SPAN 
class=down><sub>2</sub></SPAN>。为方便起见,语句序号从(1)开始。与该基本块对应的dag见图8.10。dag的构造算法将在下面讨论,可以看到dag的每一个结点都可代表一个由若干个叶结点形成的公式、即在基本块的入口变量具有的值和常数所形成的计算。例如在图8.10中的t<SPAN 
class=down><sub>1</sub></SPAN>标记的结点代表<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
4*i<br>
而t<SPAN class=down><sub>2</sub></SPAN>所标记的结点代表<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
a-4<br>
即从地址a中减去4,其中a表示数组a第一个元素所在的地址,a-4相当公式(7.5)中的base-low<sub>1</sub>×w。进而t<SPAN class=down><sub>3</sub></SPAN>所标记的结点则代表<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
t<SPAN class=down><sub>2</sub></SPAN>[t<SPAN class=down><sub>1</sub></SPAN>]<br>
即从地址b-4偏移4*i个字节后所得到的字的值。 <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
(1) t<SPAN class=down><sub>1</sub></SPAN>:=4*i <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  
(2) t<SPAN    
class=down><sub>2</sub></SPAN>:=a-4 <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
(3) t<SPAN class=down><sub>3</sub></SPAN>:=t<SPAN   
class=down><sub>2</sub></SPAN>[t<SPAN class=down><sub>1</sub></SPAN>] <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
(4) t<SPAN    
class=down><sub>4</sub></SPAN>:=4*i <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  
(5) t<SPAN class=down><sub>5</sub></SPAN>:=b-4 <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
(6) t<SPAN    
class=down><sub>6</sub></SPAN>:=t<SPAN class=down><sub>5</sub></SPAN>[t<SPAN class=down><sub>4</sub></SPAN>] 
<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
(7) t<SPAN class=down><sub>7</sub></SPAN>:=t<SPAN class=down><sub>3</sub></SPAN>*t<SPAN   
class=down><sub>6</sub></SPAN> <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  
(8) t<SPAN class=down><sub>8</sub></SPAN>:=prod+t<SPAN   
class=down><sub>7</sub></SPAN> <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  
(9) prod:=t<SPAN class=down><sub>8</sub></SPAN> <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
(10)t<SPAN 
class=down><sub>9</sub></SPAN>:=i+l <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
(11)i:=t<SPAN class=down><sub>9</sub></SPAN> <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  
(12)if     
i&lt;=20 goto(1)<br>    
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
 
<center>图8.9基本块B<SPAN class=down><sub>2</sub></SPAN>的三地址代码</center>center
<P align=center><BR><IMG height=304 src="8.10.gif" width=475> <BR><BR>
图8.10&nbsp;&nbsp;   对应图8.9基本块的dag </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='8.6.1.htm'"></td>
<td><img src="../images/next.gif" onmouseover="javascript:style.cursor='hand'" onclick="vbscript:window.location.href='8.6.1_2.htm'"></img></td>
</tr>
</table>

</BODY>

⌨️ 快捷键说明

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