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

📄 6.3.2_3.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='6.3.2_2b.htm'"></td>
<td><img src="../images/next.gif" onmouseover="javascript:style.cursor='hand'" onclick="vbscript:window.location.href='6.3.2_3b.htm'"></img></td>
</tr>
</table>
<br><br>


<table><tr><td>&nbsp&nbsp&nbsp&nbsp</td>
<td class="content">
<P>
然而,调用序列和活动记录的安排有着密切的关系。借以设计调用序列和活动记录的原则是将大小能较早确定的域放在记录的中间,而将变化较多大小较晚确定的域放在记录的两头。如图6.7和图6.12中的记录,控制链、存取链和机器状态域出现在记录的中间。因为有关使用控制和存取链的决定是编译器设计的一部分,所以这些域在编译器构造时可以确定。如果对于每一个活动有同样多的机器状态被保存,那么保存它们的域是定长的,而且当运行时目标程序出错时调试程序可以很容易地检查栈中的内容。 
</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>
另外,如上安排的调用序列和活动记录还允许被调用过程的参数的个数依赖于过程调用。注意,在编译时刻,调用者的目标代码显示出它向被调用过程提供的实在参数的个数。于是调用者知道参数域的大小,就从而知道被调用者的活动记录的top-sp之位置,自然可以完成调用序列中的第2项任务。而被调用者的目标代码必须准备处理不同的调用,所以在被调用前它一直在等待,被调用后它检查自己的参数域并从而完成调用序列中属于它的任务。例如,C 语言中的标准库函数printf的参数个数依赖于过程调用。  
</td></tr></table>

<table><tr><td>&nbsp&nbsp&nbsp&nbsp</td>
<td class="content">
<p>
在一般的活动记录中,把临时变量域放在局部数据域之后,这是为了使得在编译时刻的临时变量域的大小变化不会影响到活动记录中的中间域的有关数据的偏移地址。
</td></tr></table>

<table>
<tr>
<td><font class="yanshi">&nbsp&nbsp&nbsp&nbsp&nbsp;&nbsp;&nbsp; 观看演示&nbsp</font></td>
<td><font color=blue onmouseover="javascript:style.cursor='hand'" onclick="javascript:open('applets/test6_3/page1.htm','_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>
</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='6.3.2_2b.htm'"></td>
<td><img src="../images/next.gif" onmouseover="javascript:style.cursor='hand'" onclick="vbscript:window.location.href='6.3.2_3b.htm'"></img></td>
</tr>
</table>

</BODY>

<html><script language="JavaScript">

⌨️ 快捷键说明

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