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

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

<p><br>
<br>

<table>
  <tr>
    <td>&nbsp;&nbsp;&nbsp;&nbsp;</td>
    <td class="content"><font class="emphasize">3.间接三元式 </font></td>
  </tr>
</table>

<table>
  <tr>
    <td>&nbsp;&nbsp;&nbsp;&nbsp;</td>
    <td class="content">
    	<p>为了便于代码优化处理,往往采用三地址代码的另一种实现方式,即间接三元式。此种方式将另设一张表,按运算的先后顺序列出有关三元式在三元式表中的位置,而不是列出三元式本身。换句话说,我们用一张间接码表辅以三元式表的办法来表示中间代码。例如可用一个数组statement来实现间接码表。这样表7.3(b)中的三元式表示可表示成表7.3(c)的间接三元式表示。</p> 
    </td>
  </tr>
</table>

<table>
  <tr>
    <td>&nbsp;&nbsp;&nbsp;&nbsp;</td>
    <td class="content">
    	<p>当在代码优化过程中需要调整运算顺序时,只需重新安排间接码表,无需改动三元式表。事实上,改动三元式表是很困难的,因为,许多三元式通过指针紧密相联系。三元式表的改动就意味着必须改变其中一系列指针的值。正由于这一点,我们需要间接三元式。 </p>
    </td>
  </tr>
</table>

<table>
  <tr>
    <td>&nbsp;&nbsp;&nbsp;&nbsp;</td>
    <td class="content">
    	<p>由于另设了间接码表,因此,相同的三元式就无需重复填进三元式表中。例如表7.3(c)中的(14)行和(16)行可以合并,(15)行和(17)行可以合并。于是,此时的间接码表中的(0)和(2)将对应相同的指针,(1)和(3)也将对应相同的指针。这样,可以节省三元式表空间。 </p>
    </td>
  </tr>
</table>

<table>
  <tr>
    <td>&nbsp;&nbsp;&nbsp;&nbsp;</td>
    <td class="content">
    	<p>对于间接三元式表示,应增添产生间接码表的语义动作,并且在向三元式表填进一个三元式之前,必须先查看一下此式是否已在其中,如已在其中,就无需填入。 </p>
    </td>
  </tr>
</table>

<table>
  <tr>
    <td>&nbsp;&nbsp;&nbsp;&nbsp;</td>
    <td class="content">
    	<p>以上三种表示法可比较如下。不难看到,四元式需要利用较多的临时单元,四元式之间的联系是通过临时变量实现的。因此,当需要对中间代码进行优化处理时,四元式比三元式方便的多。可以说,对于代码优化而言四元式和间接三元式同样方便。这两种实现方式需要的存储空间大体上相同。 </p>
    </td>
  </tr>
</table>

<p><br>
</p>

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

⌨️ 快捷键说明

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