📄 1.2.1.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='1.2.0b.htm'"></img></td>
<td><img src="../images/next.gif" onmouseover="javascript:style.cursor='hand'" onclick="vbscript:window.location.href='1.2.1b.htm'"></img></td>
</tr>
</table>
<br><br>
<table><tr><td>    </td>
<td class="content">
<p><font class="emphasize">综合</font> </p>
<p>综合阶段是从分析阶段得到的带语义的树形式或其它源程序内部形式出发,并根据所制定的源语言到目标语言的对应关系,进行综合加工,从而得到与源程序等价的目标程序。此任务也可以分为两部分:中间代码生成部分和代码生成部分。</p>
<p><font class="emphasize">中间代码生成程序</font>将从源程序的树形式或其它形式产生源程序的中间代码。我们可以把中间代码看成是某个抽象机的一个程序。中间代码表示应当是易于生成的,并且是易于翻译到目标程序的。为减少目标程序的运行时间,这一部分涉及到目标程序的优化。 </p>
<p><font class="emphasize">代码生成程序</font>将把源程序的中间代码真正翻译成汇编语言程序或机器语言程序。 </p>
<p><font class="emphasize">表格管理</font> </p>
<p>编译程序需要收集所有出现于源程序中的数据实体的有关信息。例如,编译程序应该知道一个变量的类型,一个数组的大小,一个函数的参数个数及其类型等等。这些信息一般可以从源程序正文中获得,因此在概念上它们是程序正文的一部分。但是这些信息有它们特殊的存取特性。例如它们可能要用在离它们定义的位置较远的地方,而又必须对它们进行随机地存取。这些存取过程通常占用了整个编译时间中的相当一部分。因此,有效的存取结构至关重要。一般说来,因为内存的原因,编译程序在编译的某一时刻只掌握很小一段源程序,所以不能用反复阅读源程序的办法来解决问题,而应用随机存取的表格来存放这些信息。这样的表称为符号信息表。如标识符信息表、循环信息表、常数信息表等等。</p>
<p>如图1.2所示,编译程序在各个阶段中都要从信息表中存取信息。因而合理的设计和使用表格是编译程序构造的一个重要问题。 </p>
</td>
</tr></table>
<!--table>
<td><font class="yanshi">    观看演示 </font></td>
<td><font color=blue onmouseover="javascript:style.cursor='hand'" onclick="javascript:open('APPLET/compile.html','_blank','menu=no,toolbar=no,location=no,directories=no,status=no,scrollbars=yes,resizable=yes,copyhistory=no,left=100,top=100,width=800,height=600')">编译程序的各个组成部分</font></td>
<td><img src="../images/yanshi.gif"></img></td>
</table-->
<br>
<table align=right width=300>
<tr>
<td><img src="../images/previous.gif" onmouseover="javascript:style.cursor='hand'" onclick="vbscript:window.location.href='1.2.0b.htm'"></img></td>
<td><img src="../images/next.gif" onmouseover="javascript:style.cursor='hand'" onclick="vbscript:window.location.href='1.2.1b.htm'"></img></td>
</tr>
</table>
</BODY>
</html>
<html><script language="JavaScript">
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -