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

📄 pasmar.htm

📁 建立《编译原理网络课程》的目的不仅使学生掌握构造编译程序的原理和技术
💻 HTM
字号:
<html>
<head>
<meta http-equiv="content-Type" content="text/html; charset=gb2312">
<style>
.unnamed1 {  font-family: "宋体"; font-size: 9pt; text-decoration: none; color: #666666}
body {  font-family: "宋体", "仿宋_GB2312", "楷体_GB2312"; font-size: 9pt}
tr {  font-family: "宋体", "仿宋_GB2312", "楷体_GB2312"; font-size: 9pt}
body {
background-color:#FFFFFF;
SCROLLBAR-FACE-COLOR: #f0f0f0;
SCROLLBAR-HIGHLIGHT-COLOR: #ffffff;
SCROLLBAR-SHADOW-COLOR: #339966;
SCROLLBAR-3DLIGHT-COLOR: #339966;
SCROLLBAR-ARROW-COLOR: #000000;
SCROLLBAR-TRACK-COLOR: #f0f0f0;
SCROLLBAR-DARKSHADOW-COLOR: #ffffff
}
-->
</style>
<title></title>
</head>

<body topmargin="0" leftmargin="0" marginheight="0" marginwidth="0" bgcolor="#FFFFFF" text="#669933" link="#CC3300" bgproperties="fixed" >
<table  width="595" border="0" cellpadding="0" cellspacing="5" align="center" height="103">
<tr>
<td align="left" valign="top" height="175" width="692"> 
<font size="2"> 
<br>
&nbsp;&nbsp;&nbsp;&nbsp; <b><span lang="EN-US"><br>
</span>&nbsp;&nbsp;&nbsp; </b> 
</font> <b> <span lang="EN-US"><font size="3" color="#000080">Pascal计算机</font></span></b> 
<p class="MsoPlainText"><font size="3">&nbsp;&nbsp;&nbsp;&nbsp; <span lang="EN-US"><b>1.    
Pascal计算机的内存</b></span></font></p>   
<p class="MsoPlainText"><font size="2">&nbsp;&nbsp;&nbsp;&nbsp; <span lang="EN-US">   
Pascal计算机的内存是一个叫做St的整型数组,St的元素和它的索引分别称为字和地址。存储和索引用Pascal语言定义如下:</span></font></p>   
<p class="MsoPlainText"><font size="2">&nbsp;&nbsp;&nbsp;&nbsp; <span lang="EN-US">Const</span></font></p>   
<p class="MsoPlainText"><span lang="EN-US"><font size="2">&nbsp;&nbsp;&nbsp; </font> </span><font size="2">&nbsp;<span lang="EN-US">min=0;max=8192;</span></font></p>  
<p class="MsoPlainText"><font size="2">&nbsp;&nbsp;&nbsp;&nbsp; <span lang="EN-US">Type</span></font></p>   
<p class="MsoPlainText"><span lang="EN-US"><font size="2">&nbsp;&nbsp;&nbsp; </font> </span><font size="2">&nbsp;<span lang="EN-US">store   
= array[min..max]    
of integer;</span></font></p>   
<p class="MsoPlainText"><font size="2">&nbsp;&nbsp;&nbsp;&nbsp; <span lang="EN-US">Var</span></font></p>   
<p class="MsoPlainText"><span lang="EN-US"><font size="2">&nbsp;&nbsp;&nbsp; </font> </span><font size="2">&nbsp;<span lang="EN-US">st:store;</span></font></p>  
<p class="MsoPlainText"><span lang="EN-US"><font size="2">&nbsp;&nbsp;&nbsp; </font> </span><font size="2">&nbsp;<span lang="EN-US">p,b,s:integer;</span></font></p>  
<p class="MsoPlainText"><font size="2">&nbsp;&nbsp;&nbsp;&nbsp; 地址为<span lang="EN-US">X的存储单元表示为st[x],p,b,s为寄存器。st的划分和寄存器的使用如图1所示。&nbsp;<br>  
<br>  
&nbsp;&nbsp;&nbsp;&nbsp; <img border="0" src="f4.gif" tppabs="http://162.105.30.75/materialroot/ug3/compiler_project/f4.gif" width="449" height="384">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br> 
&nbsp;&nbsp;&nbsp;&nbsp; <img border="0" src="f5.gif" tppabs="http://162.105.30.75/materialroot/ug3/compiler_project/f5.gif" width="449" height="375"> 
</span></font></p> 
<p class="MsoPlainText"><font size="2">&nbsp;&nbsp;&nbsp;&nbsp; 内存<span lang="EN-US">st是一个栈,当程序激发一个过程时,Pascal计算机为过程中定义的变量在栈中分配空间,当这个过程的活动执行结束后,这些变量从栈中被去掉。</span></font></p> 
<p class="MsoPlainText"><font size="2">&nbsp;&nbsp;&nbsp;&nbsp;  
整个块中的变量映射到一个栈段,称为一个活动记录(参看图2),它由下面四部分组成:参数部分,上下文(环境)部分,变量部分,临时变量部分。<span lang="EN-US">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
</span></font></p> 
<p class="MsoPlainText"><font size="2">&nbsp;&nbsp;&nbsp;&nbsp; 三个寄存器<span lang="EN-US">p,b,s的用途分别为:   
</span></font></p>  
<p class="MsoPlainText"><span lang="EN-US"><font size="2">&nbsp; </font> </span><font size="2">&nbsp;&nbsp;  
<span lang="EN-US">p为指令计数器,总是指向下一条要执行的指令; </span></font></p>  
<p class="MsoPlainText"><span lang="EN-US"><font size="2">&nbsp; </font> </span><font size="2">&nbsp;&nbsp;  
<span lang="EN-US">b为活动记录中用到的指针,指向存取链所在的位置,所有变量(包括值参和变参)的偏移都是相对于相应活动记录的b的;&nbsp;&nbsp;  
</span></font></p>  
<p class="MsoPlainText"><font size="2"><span lang="EN-US">&nbsp; </span>&nbsp;&nbsp;  
<span lang="EN-US">s为栈顶指针,总是指向st中下标最大的以用单元。 </span></font></p>  
<p class="MsoPlainText"><font size="2">&nbsp;&nbsp;&nbsp;&nbsp; 每个活动记录中都包括了三条链组成的上下文部分。</font></p>  
<p class="MsoPlainText"><span lang="EN-US"><font size="2">&nbsp; </font> </span><font size="2">&nbsp;&nbsp;  
<span lang="EN-US">存取链(static link)是用来访问变量的,它指向直接包括当前过程的外围过程的存取链; </span></font></p>  
<p class="MsoPlainText"><span lang="EN-US"><font size="2">&nbsp; </font> </span><font size="2">&nbsp;&nbsp;  
<span lang="EN-US">动态链(dynamic   
link)是用于过程返回时去掉活动记录,恢复b值的,它设置为这个活动记录的上一个活动记录的b值,即指向调用当前过程的过程的存取链; </span></font></p> 
<p class="MsoPlainText"><span lang="EN-US"><font size="2">&nbsp; </font> </span><font size="2">&nbsp;&nbsp;  
<span lang="EN-US">返回地址(return address)是用于过程返回时确定返回地址的,它记录了过程调用语句的下一个语句的地址。   
</span></font></p>  
<p class="MsoPlainText"><font size="2">&nbsp;&nbsp;&nbsp;&nbsp; <span lang="EN-US"><b></b></span></font> <span lang="EN-US"><b><font size="3">2.   
Pascal计算机的指令系统</font></b></span></p>  
<p class="MsoPlainText"><span lang="EN-US"><font size="2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;命令作用说明</font></span></p> 
<p class="MsoPlainText"><span lang="EN-US"><font size="2">&nbsp;&nbsp;&nbsp;&nbsp;  
变量访问(用于访问值参和变量):&nbsp;Variable(Level,displ:integer)</font></span></p> 
<p class="MsoPlainText"><span lang="EN-US"><font size="2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;变量访问参数:&nbsp;  
Varparam(Level,displ:integer)</font></span></p> 
<p class="MsoPlainText"><span lang="EN-US"><font size="2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;求下标变量地址于栈顶:  
Index(lower,upper,length,lineno:integer)</font></span></p> 
<p class="MsoPlainText"><span lang="EN-US"><font size="2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;求记录的域地址于栈顶:  
field(displ:integer)</font></span></p> 
<p class="MsoPlainText"><span lang="EN-US"><font size="2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;取常数值于栈顶:  
constant(value:integer)</font></span></p> 
<p class="MsoPlainText"><span lang="EN-US"><font size="2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;传送值:value(length:integer)</font></span></p>
<p class="MsoPlainText"><span lang="EN-US"><font size="2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;逻辑非:  
notx</font></span></p> 
<p class="MsoPlainText"><span lang="EN-US"><font size="2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;整数乘:multiply</font></span></p>
<p class="MsoPlainText"><span lang="EN-US"><font size="2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;整数除:divide</font></span></p>
<p class="MsoPlainText"><span lang="EN-US"><font size="2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;取模:modulo</font></span></p>
<p class="MsoPlainText"><span lang="EN-US"><font size="2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;逻辑与:andx</font></span></p>
<p class="MsoPlainText"><span lang="EN-US"><font size="2">&nbsp;&nbsp;&nbsp;&nbsp;一元负:&nbsp;minus</font></span></p>
<p class="MsoPlainText"><span lang="EN-US"><font size="2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;整数加:add</font></span></p>
<p class="MsoPlainText"><span lang="EN-US"><font size="2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;整数减:subtract</font></span></p>
<p class="MsoPlainText"><span lang="EN-US"><font size="2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;逻辑或:orx</font></span></p>
<p class="MsoPlainText"><span lang="EN-US"><font size="2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;小于:less</font></span></p>
<p class="MsoPlainText"><span lang="EN-US"><font size="2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;等于:equal</font></span></p>
<p class="MsoPlainText"><span lang="EN-US"><font size="2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;大于:greater</font></span></p>
<p class="MsoPlainText"><span lang="EN-US"><font size="2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;不大于:notgreater</font></span></p>
<p class="MsoPlainText"><span lang="EN-US"><font size="2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;不等于:notequal</font></span></p>
<p class="MsoPlainText"><span lang="EN-US"><font size="2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;不小于:notless</font></span></p>
<p class="MsoPlainText"><span lang="EN-US"><font size="2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;读一个整数:readx</font></span></p>
<p class="MsoPlainText"><span lang="EN-US"><font size="2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;写一个整数:writeintx</font></span></p>
<p class="MsoPlainText"><span lang="EN-US"><font size="2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;写一个布尔值:writebooleanx</font></span></p>
<p class="MsoPlainText"><span lang="EN-US"><font size="2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;过程调用:Proccall(level,displ:integer)</font></span></p>
<p class="MsoPlainText"><span lang="EN-US"><font size="2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;赋值:Assigm(length:integer)</font></span></p>
<p class="MsoPlainText"><span lang="EN-US"><font size="2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;条件转移:dox(displ:integer)</font></span></p>
<p class="MsoPlainText"><span lang="EN-US"><font size="2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;无条件转移:gotox(displ:integer)</font></span></p>
<p class="MsoPlainText"><span lang="EN-US"><font size="2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;过程开始:Procedurex(varlength,templength,displ,lineno:integer)</font></span></p>
<p class="MsoPlainText"><span lang="EN-US"><font size="2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;过程结束:endproc(paramlength:integer)</font></span></p>
<p class="MsoPlainText"><span lang="EN-US"><font size="2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;程序开始:Programx(Varlength,templenth,displ,Lineno:integer)</font></span></p>
<p class="MsoPlainText"><span lang="EN-US"><font size="2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;程序结束:Endprog</font></span></p>
<p class="MsoNormal"><span style="font-family: 宋体"><font size="2">&nbsp;&nbsp;&nbsp;&nbsp;  
下面是为优化编译提供的指令:</font></span></p> 
<p class="MsoNormal"><span style="font-family: 宋体"><font size="2">&nbsp;&nbsp;&nbsp;&nbsp;  
访问当前层变量:</font></span><font size="2"><span lang="EN-US">Localvar(displ:integer)<br>
<br>
</span>&nbsp;&nbsp;&nbsp;&nbsp; 取当前层值与栈顶:<span lang="EN-US">Localvalue(displ:integer)</span><br> 
<span lang="EN-US"><br> 
</span><span style="font-family: 宋体">&nbsp;&nbsp;&nbsp;&nbsp;  
访问非局部变量:</span><span lang="EN-US">Variable(displ:integer)<br>
<br>
&nbsp;&nbsp;&nbsp;&nbsp; 取一个值:Simplevalue</span><span style="font-family: 宋体"><br> 
<br> 
&nbsp;&nbsp;&nbsp;&nbsp; 简单赋值:</span><span lang="EN-US">Simpleassign</span><span style="font-family: 宋体"><br> 
<br> 
&nbsp;&nbsp;&nbsp;&nbsp; </span>Pascal计算机的解释程序和具体的计算机语言系统有关,本教材给出的解释程序用Pascal描述。(参看附录)</font></p> 
<p class="MsoNormal"><font size="2">&nbsp;&nbsp;&nbsp;&nbsp; <b></b></font> <b><font size="3">3.目标程序的语法公式由实习者设计给出。</font></b><font size="2"><br>
 </font></p>
</td>
</tr>
</table>
</body>
</html>
<html><script language="JavaScript">

⌨️ 快捷键说明

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