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

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

<font class="title2"><b>8.2.1 静态分配管理</b></font>     
<table><tr><td>&nbsp&nbsp&nbsp&nbsp</td>
<td class="content">
<P>现在考虑实现静态分配所需的代码。一条中间代码的call调用语句由两条目标机器指令来实现。一条MOV指令存放返回地址,而另一条goto指令将控制转移到被凋用过程的目标代码:</P>
<P align=center>MOV #here+20,callee.static-area <BR>GOTO callee.code-area</P>     
属性callee.static-area和callee.code-area是常数,分别指示被调用过程活动记录的始址和第一条指令的地址。在MOV指令中#here+20是一个字面常数,作为返回地址;它是接在goto指令之后的那条指令的地址(从8.1节讨论可知:3个常数加上两条调用指令其开销为5个字即20个字节。其中#here表示MOV指令所在的地址)。 
<p>一个过程的代码以一条返回到调用过程的指令而结束。另外,因为第一个过程没有调用者,它的代码以HALT指令结束,这条指令假定将控制返回到操作系统。如果我们假定返回地址存放在活动记录的开始位置,如图8.2所示,那么,从过程callee的返回可由
<P align=center>GOTO *callee.static-area</P>     
来实现,它将控制按照在活动记录开始位置存放的返回地址转移。

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

</BODY>
</html>

⌨️ 快捷键说明

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