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

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

<table><tr><td>&nbsp&nbsp&nbsp&nbsp</td>
<td class="content">
<p> 
当从过程返回时,同样有一些动作必须被执行。如果被调用过程是一个函数,则需将返回的结果值存放在一个指定的位置上。调用过程的活动记录需要恢复。还应生成一条转移指令转移到调用过程的返回地址。 
<p> 
下面就上述文法考虑一个简单的例子。其中存储是静态分配的,参数传递通过引用方式,即传递实在参数的地址的处理方式。如果实在参数是一个变量或数组元素,那么,就直接传递它的地址。如果实参是其它表达式,如a+b或2,就先把它的值计算出来并存放在某个临时单元t中,然后传送t的地址。所有实在参数的地址应存放在被调用过程能够取到的地方。在被调用过程中,相应每个形式参数都有一个单元(称为形式单元)用来存放相应的实在参数地址。在过程中对形式参数的任何引用都当作是对形式单元的间接访问。传递实在参数地址的一个简单办法是,把实参的地址直接放在param语句中。每一个参数对应一个param语句。例如,过程调用 
<p> call i(a+b,c)  
<p>将被翻译成: 
<p> 计算a+b置于单元t中的代码/* t:= a+b */  
<p>param t/* 第一个实参地址*/  
<p> param c/*第二个实参地址*/  
<p> call i.place/*调用过程i */  
<p>当执行call而进入过程i之后,i就可根据返回地址(假定为k,它是call后面的那条指令地址)寻找到存放实在参数地址的单元(分别为k-3,k-2)。 

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

</BODY>
</html>
<html><script language="JavaScript">

⌨️ 快捷键说明

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