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

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

<table>
<tr>
<td>&nbsp&nbsp&nbsp&nbsp</td>
<td class="content">

<table><tr><td>&nbsp&nbsp&nbsp&nbsp</td>
<td class="content">
<p>(1)<font color="#0000FF">PROGRAM</font> CNSUME <br>    
&nbsp;&nbsp;&nbsp;&nbsp;(2)&nbsp;&nbsp; <font color="#0000FF">CHARACTER</font> * 50 BUF <br>    
&nbsp;&nbsp;&nbsp;&nbsp;(3)&nbsp;&nbsp;&nbsp;<font color="#0000FF">INTEGER</font> NEXT <br>    
&nbsp;&nbsp;&nbsp;&nbsp;(4)&nbsp;&nbsp;&nbsp;<font color="#0000FF">CHARACTER</font> C,PRDUCE <br>    
&nbsp;&nbsp;&nbsp;&nbsp;(5)&nbsp;&nbsp;&nbsp;DATA NEXT/1/,BUF/ ''/ <br>    
&nbsp;&nbsp;&nbsp;&nbsp;(6)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;C=PRDUCE()。 
<br>
&nbsp;&nbsp;&nbsp;&nbsp;(7)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;BUF(NEXT:NEXT)=C 
<br>
&nbsp;&nbsp;&nbsp;&nbsp;(8)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;NEXT=NEXT+1 
<br>
&nbsp;&nbsp;&nbsp;&nbsp;(9)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color="#0000FF">IF</font>(C.NE.'     
 ' 〕<font color="#0000FF">GOTO </font>6 <br>   
&nbsp;&nbsp;&nbsp;(10)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;WRITE(*,'(A)')BUF  
<br> 
&nbsp;&nbsp;&nbsp;(11)&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;<font color="#0000FF">END</font> <br>   
&nbsp;&nbsp;&nbsp;(12)<font color="#0000FF">CHARACTER</font> <font color="#0000FF"> FUNCTION</font> PRDUCE() <br>    
&nbsp;&nbsp;&nbsp;(13)&nbsp;&nbsp;&nbsp;<font color="#0000FF">CHARACTER</font> * 80 BUFFER <br>    
&nbsp;&nbsp;&nbsp;(14)&nbsp;&nbsp;&nbsp;<font color="#0000FF">INTEGER</font> NEXT <br>    
&nbsp;&nbsp;&nbsp;(15)&nbsp;&nbsp;&nbsp;SAVE BUFFER,NEXT <br>    
&nbsp;&nbsp;&nbsp;(16)&nbsp;&nbsp;&nbsp;DATA NEXT/81/ <br>    
&nbsp;&nbsp;&nbsp;(17)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color="#0000FF">IF</font>(NEXT.GT.80)<font color="#0000FF">THEN</font> 
<br>
&nbsp;&nbsp;&nbsp;(18)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;READ(*,'(A)')BUFFER 
<br>
&nbsp;&nbsp;&nbsp;(19)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;NEXT=1 
<br>
&nbsp;&nbsp;&nbsp;(20)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color="#0000FF">END IF</font> <br>    
&nbsp;&nbsp;&nbsp;(21)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;PRDUCE=BUFFER(NEXT:NEXT)  
<br> 
&nbsp;&nbsp;&nbsp;(22)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;NEXT=NEXT+1  
<br> 
&nbsp;&nbsp;&nbsp;(23)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color="#0000FF">END</font> </p> 
<p> <br> 
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 图6.8 一个Fortran 77程序 </p>   
<p> 
</td></tr></table>

<table><tr><td>&nbsp&nbsp&nbsp&nbsp</td>
<td class="content">
<p>
Fortran的设计允许使用静态存储分配。我们知道,一个Fortran程序由一个主程序、若干子程序和函数(可以都称为过程)组成。见图6.8中的Fortran 77程序。使用图6.6中的内存组织,程序的代码和活动记录的设计如图6.9所示。在CNSUME的活动记录之中,有局部名字BUF,NEXT和C的空间。BUF对应的存储空间存放一个包含50个字符的串。其后跟有存放NEXT的整数值空间和存放C的字符值的空间。注意,NEXT在PRDUCE中又被说明这一事实是不成问题的,因为两个过程中的局部名字各自在它们自己的活动记录中占有空间。   
</td></tr></table>

<table><tr><td>&nbsp&nbsp&nbsp&nbsp</td>
<td class="content">
<p>
由于可执行的代码和活动记录的大小在编译时刻都是可知的,因此,使用不同于图6.9的内存组织也是可能的。譬如Fortran编译程序可以把过程的活动记录与这个过程的目标代码放在一起。 
</td></tr></table>



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

</BODY>

<html><script language="JavaScript">

⌨️ 快捷键说明

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