📄 6.2.2.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.2.1b.htm'"></td>
<td><img src="../images/next.gif" onmouseover="javascript:style.cursor='hand'" onclick="vbscript:window.location.href='6.2.3.htm'"></img></td>
</tr>
</table>
<br><br>
<font class="title2"><b>6.2.2 活动记录</b></font>
<table><tr><td>    </td>
<td class="content">
<P>
一个过程的一次执行所需信息的管理是通过使用一个称为活动记录的连续的存储块来实现的。活动记录中包括图6.7所表示的各个域。在Pascal语言中,通常习惯于当一个过程被调用时,把它的活动记录推入到运行时刻的栈中,并在控制返回调用程序时从栈中弹出活动记录。
<p>
<P>
</td></tr></table>
<TABLE >
<td height="190%" colspan="2"> <blockquote>
<P>
<table width="50%" border="1" align="center" cellspacing=0 cellpadding=5>
<tr>
<td>
<div align="center">返回的值<br>(returned value)</div>
</td>
</tr>
<tr>
<td>
<div align="center">实在参数<br>(actual parameter)</div>
</td>
</tr>
<tr>
<td>
<p align="center">控制链(可选择)<br>( control link)</p>
</td>
</tr>
<tr valign="middle">
<td>
<div align="center">存取链(可选择)<br>(optional access<br>
link) </div>
</td>
</tr>
<tr>
<td>
<div align="center">保存的机器状态(saved machine<br>
status) </div>
</td>
</tr>
<tr>
<td>
<div align="center">局部数据<br>(local data)</div>
</td>
</tr>
<tr>
<td>
<div align="center">临时变量<br>(temporaries)</div>
</td>
</tr>
</table>
<table width="80%" border="0" align="center">
<tr>
<td>
<div align="center"><font face="隶书"><B>图6.7</B> 一个普通的活动记录</font></div>
<p>
<p>
</td>
</tr>
</p>
</table>
<table><tr><td>    </td>
<td class="content">
活动记录中的各种域的用处如下,从临时变量域开始:
</td><tr></table>
<table><tr>
<td class="content">
<p>
1.临时变量的值,如在表达式计算中产生的,存放在临时变量域中。
</td></tr></table>
<table><tr>
<td class="content">
<p>
2.局部数据域存放过程的一次执行中的局部数据。
</td></tr></table>
<table><tr>
<td class="content">
<p>
3.存放机器状态的域保存的是刚好在调用一个过程之前有关机器的状态的信息。这些信息包括当控制从过程返回时必须恢复的程序计数器和各种寄存器的值。
</td></tr></table>
<table><tr>
<td class="content">
<p>
4.选择的存取链在6.4节将要用到。它用来访问其它活动记录中存放的非局部数据。这在Pascal语言中是需要用到的。
</td></tr></table>
<table><tr>
<td class="content">
<p>
5.选择的控制链指向调用程序的活动记录。
</td></tr></table>
<table><tr>
<td class="content">
<p>
6.实在参数域是调用过程用来为被调用过程提供参数的域。在活动记录中,我们把参数的空间表示了出来,但是为了提高效率,有时参数是通过机器的寄存器来传递的。
</td></tr></table>
<table><tr>
<td class="content">
<p>
7.返回值域是被调用过程用来为调用过程存放返回值的。<br>
</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.2.1b.htm'"></img></td>
<td><img src="../images/next.gif" onmouseover="javascript:style.cursor='hand'" onclick="vbscript:window.location.href='6.2.3.htm'"></img></td>
</tr>
</table>
</BODY>
<html><script language="JavaScript">
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -