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

📄 9.13.3.htm

📁 建立《编译原理网络课程》的目的不仅使学生掌握构造编译程序的原理和技术
💻 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>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
    = addr(A) + 4 * ( i * n + j )</p>
    <p>&nbsp;&nbsp;&nbsp;&nbsp; 该程序的三地址代码序列被划分成基本块后如下:
    <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>
&nbsp;&nbsp;&nbsp;&nbsp;
D(B<sub>1</sub>) = { B<sub>1</sub> }<br>
&nbsp;&nbsp;&nbsp;&nbsp;
D(B<sub>2</sub>) = { B<sub>1</sub>, B<sub>2</sub> }<br>
&nbsp;&nbsp;&nbsp;&nbsp;
D(B<sub>3</sub>) = { B<sub>1</sub>, B<sub>2</sub>, B<sub>3</sub> }<br>
&nbsp;&nbsp;&nbsp;&nbsp;
D(B<sub>4</sub>) = { B<sub>1</sub>, B<sub>2</sub>, B<sub>3</sub>, B<sub>4</sub> }<br>
&nbsp;&nbsp;&nbsp;&nbsp;
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>
&nbsp;&nbsp;&nbsp;&nbsp;
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>
&nbsp;&nbsp;&nbsp;&nbsp;
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>
&nbsp;&nbsp;&nbsp;&nbsp;
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>
&nbsp;&nbsp;&nbsp;&nbsp;
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>
&nbsp;&nbsp;&nbsp;&nbsp;
根据回边 B<sub>7</sub> -> B<sub>6</sub>,循环L<sub>1</sub>为:<br>
&nbsp;&nbsp;&nbsp;&nbsp;
L<sub>1</sub> = { B<sub>7</sub>, B<sub>6</sub> }<br>
&nbsp;&nbsp;&nbsp;&nbsp;
根据回边 B<sub>8</sub> -> B<sub>4</sub>,循环L<sub>2</sub>为:<br>
&nbsp;&nbsp;&nbsp;&nbsp;
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>
&nbsp;&nbsp;&nbsp;&nbsp;
根据回边 B9 -> B2, 循环L3为:<br>
&nbsp;&nbsp;&nbsp;&nbsp;
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>
&nbsp;&nbsp;&nbsp;&nbsp;
经循环优化后三地址代码序列变为:
    <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 + -