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

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

<table><tr><td>&nbsp&nbsp&nbsp&nbsp</td>
<td class="content">
    <p>考虑从形如a:=b+c的三地址语句生成代码的情形,我们来看看为上述目标机器产生代码的一些困难之处。这里名字b,c表示具有不同存储单元的简单变量。这条三地址语句可以通过许多不同的指令序列来实现,如:<br>
&nbsp;&nbsp;&nbsp;&nbsp; 1.MOV b,R<span class="down">0</span><br>   
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ADD c,R<span class="down">0</span>    
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cost(开销)=6<br>   
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; MOV R<span class="down">0</span>,a<br>  
&nbsp;&nbsp;&nbsp;&nbsp; 2.MOV b,a<br>  
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ADD c,a    
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cost=6<br>  
假定R<span class="down">0</span>,R<span class="down">1</span>和R<span class="down">2</span>中分别存放了a,b和c的地址,我们采用:<br>
&nbsp;&nbsp;&nbsp;&nbsp; 3.MOV *R<span class="down">1</span>,*R<span class="down">0</span><br>   
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ADD *R<span class="down">2</span>,*R<span class="down">0</span>    
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;cost=2<br>  
    假定R<span class="down">1</span>和R<span class="down">2</span>中分别包含b和c的值,并且b的值在这个赋值以后不再需要,则我们还有<br>
&nbsp;&nbsp;&nbsp;&nbsp; 4.ADD R<span class="down">2</span>,R<span class="down">1</span><br>   
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; MOV R<span class="down">1</span>,a    
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cost=3</p>
<p>可以发现,要为我们的目标机器生成良好的代码,我们必须有效地利用它的地址能力。另外还有一点应该重视,即如果一个名字在不久将被引用,那么应尽可能地将该名字的地址值或真实值保存在一个寄存器中。</p>
<table align=right width=300>
<tr>
<td><img src="../images/previous.gif" onmouseover="javascript:style.cursor='hand'" onclick="vbscript:window.location.href='8.1.0_2.htm'"></td>
<td><img src="../images/next.gif" onmouseover="javascript:style.cursor='hand'" onclick="vbscript:window.location.href='8.2.0.htm'"></img></td>
</tr>
</table>
</tr></table>
</BODY>
</html>
<html><script language="JavaScript">

⌨️ 快捷键说明

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