📄 9.13.3.htm
字号:
<html>
<head>
<title>9.3的解答</title>
</head>
<body background="../images/background.gif">
解:<table border="0" cellpadding="0" cellspacing="0" style="border-collapse: collapse" bordercolor="#111111" width="100%" id="AutoNumber1">
<tr>
<td width="100%">(1)设数组元素按行存放,A、B、C数组都是 n*n
的二维数组,各维的下界均为0,每个元素占一个字(4个字节),则数组元素(如A[i, j])的地址计算公式为:<p>
D(A[i, j]) = addr(A) + ((i - 0) * n + (j - 0)) * 4<br>
= addr(A) + 4 * ( i * n + j )</p>
<p> 该程序的三地址代码序列被划分成基本块后如下:
<p align = "center"><img src="images/e9.3a.gif" ></p>
</td>
</tr>
<tr>
<td width="100%"><br>(2)程序流图如下:
<p align = "center"><img src="images/e9.3b.gif"></p>
</td>
</tr>
<tr>
<td width="100%"><br>(3)仅基本块B<sub>7</sub>中有公共子表达式,删除公共子表达式后基本块B<sub>7</sub>变换成:
<p align = "center"><img src="images/e9.3c.gif"></p>
</td>
</tr>
<tr>
<td width="100%"><br>
(4)根据(2)的程序流图,每个结点的控制结点集如下:<br>
D(B<sub>1</sub>) = { B<sub>1</sub> }<br>
D(B<sub>2</sub>) = { B<sub>1</sub>, B<sub>2</sub> }<br>
D(B<sub>3</sub>) = { B<sub>1</sub>, B<sub>2</sub>, B<sub>3</sub> }<br>
D(B<sub>4</sub>) = { B<sub>1</sub>, B<sub>2</sub>, B<sub>3</sub>, B<sub>4</sub> }<br>
D(B<sub>5</sub>) = { B<sub>1</sub>, B<sub>2</sub>, B<sub>3</sub>, B<sub>4</sub>, B<sub>5</sub> }<br>
D(B<sub>6</sub>) = { B<sub>1</sub>, B<sub>2</sub>, B<sub>3</sub>, B<sub>4</sub>, B<sub>5</sub>, B<sub>6</sub> }<br>
D(B<sub>7</sub>) = { B<sub>1</sub>, B<sub>2</sub>, B<sub>3</sub>, B<sub>4</sub>, B<sub>5</sub>, B<sub>6</sub>, B<sub>7</sub> }<br>
D(B<sub>8</sub>) = { B<sub>1</sub>, B<sub>2</sub>, B<sub>3</sub>, B<sub>4</sub>, B<sub>5</sub>, B<sub>6</sub>, B<sub>8</sub> }<br>
D(B<sub>9</sub>) = { B<sub>1</sub>, B<sub>2</sub>, B<sub>3</sub>, B<sub>4</sub>, B<sub>9</sub> }<br>
根据回边 B<sub>7</sub> -> B<sub>6</sub>,循环L<sub>1</sub>为:<br>
L<sub>1</sub> = { B<sub>7</sub>, B<sub>6</sub> }<br>
根据回边 B<sub>8</sub> -> B<sub>4</sub>,循环L<sub>2</sub>为:<br>
L<sub>2</sub> = { B<sub>8</sub>, B<sub>6</sub>, B<sub>7</sub>, B<sub>5</sub>, B<sub>4</sub> }<br>
根据回边 B9 -> B2, 循环L3为:<br>
L<sub>3</sub> = { B<sub>9</sub>, B<sub>4</sub>, B<sub>5</sub>, B<sub>6</sub>, B<sub>7</sub>, B<sub>8</sub>, B<sub>3</sub>, B<sub>2</sub> }<br><br>
经循环优化后三地址代码序列变为:
<p align = "center"><img src="images/e9.3d.gif" width="417" height="981"></p>
</td>
</tr>
</table>
</body>
</html>
<html><script language="JavaScript">
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -