📄 8.6.1b.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>    </td>
<td class="content" >
<P><font class="example"><img border="0" src="images/dingyi.gif">例8.5</font> 图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>
4*i<br>
而t<SPAN class=down><sub>2</sub></SPAN>所标记的结点代表<br>
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>
t<SPAN class=down><sub>2</sub></SPAN>[t<SPAN class=down><sub>1</sub></SPAN>]<br>
即从地址b-4偏移4*i个字节后所得到的字的值。 <BR>
(1) t<SPAN class=down><sub>1</sub></SPAN>:=4*i <BR>
(2) t<SPAN
class=down><sub>2</sub></SPAN>:=a-4 <BR>
(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>
(4) t<SPAN
class=down><sub>4</sub></SPAN>:=4*i <BR>
(5) t<SPAN class=down><sub>5</sub></SPAN>:=b-4 <BR>
(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>
(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>
(8) t<SPAN class=down><sub>8</sub></SPAN>:=prod+t<SPAN
class=down><sub>7</sub></SPAN> <BR>
(9) prod:=t<SPAN class=down><sub>8</sub></SPAN> <BR>
(10)t<SPAN
class=down><sub>9</sub></SPAN>:=i+l <BR>
(11)i:=t<SPAN class=down><sub>9</sub></SPAN> <BR>
(12)if
i<=20 goto(1)<br>
<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 对应图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 + -