《编译原理和技术》PPT课件

《编译原理和技术》PPT课件

ID:39020166

大小:589.50 KB

页数:59页

时间:2019-06-23

《编译原理和技术》PPT课件_第1页
《编译原理和技术》PPT课件_第2页
《编译原理和技术》PPT课件_第3页
《编译原理和技术》PPT课件_第4页
《编译原理和技术》PPT课件_第5页
资源描述:

《《编译原理和技术》PPT课件》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、第八章代码生成本章内容一个简单的代码生成算法涉及存储管理,指令选择,寄存器分配和计算次序选择等基本问题前端代码优化器中间代码源程序代码生成器中间代码目标程序8.1代码生成器的设计中的问题8.1.1目标程序可执行目标模块可重定位目标模块允许程序模块分别编译调用其它先前编译好的程序模块汇编语言程序免去编译器重复汇编器的工作从教学角度,增加可读性8.1代码生成器的设计中的问题8.1.2指令的选择目标机器指令系统的性质决定了指令选择的难易程度,指令系统的统一性和完备性是重要的因素指令的速度和机器特点是另一些重要的因素8.1代

2、码生成器的设计中的问题若不考虑目标程序的效率,指令的选择是直截了当的三地址语句x=y+z(x,y和z都是静态分配)MOVy,R0/把y装入寄存器R0/ADDz,R0/z加到R0上/MOVR0,x/把R0存入x中/逐个语句地产生代码,常常得到低质量的代码8.1代码生成器的设计中的问题语句序列a=b+cd=a+e的代码如下MOVb,R0ADDc,R0MOVR0,aMOVa,R0ADDe,R0MOVR0,d8.1代码生成器的设计中的问题语句序列a=b+cd=a+e的代码如下MOVb,R0ADDc,R0MOVR0

3、,aMOVa,R0--多余的指令ADDe,R0MOVR0,d8.1代码生成器的设计中的问题语句序列a=b+cd=a+e的代码如下MOVb,R0ADDc,R0MOVR0,aMOVa,R0--多余的指令ADDe,R0--若a不再使用,第三条也MOVR0,d--多余8.1代码生成器的设计中的问题8.1.3寄存器分配运算对象处于寄存器中的指令通常比运算对象处于内存的指令要短一些,执行也快一些寄存器分配选择驻留在寄存器中的一组变量寄存器指派挑选变量要驻留的具体寄存器8.1代码生成器的设计中的问题8.1.4计算次序的选择某种计算

4、次序可能会比其它次序需要较少的寄存器来保存中间结果8.2目标机器8.2.1目标机器的指令系统选择可作为几种微机代表的寄存器机器四字节组成一个字,有n个通用寄存器R0,R1,…,Rn-1。二地址指令op源,目的MOV{源传到目的}ADD{源加到目的}SUB{目的减去源}8.2目标机器地址模式和它们的汇编语言形式及附加代价模式形式地址附加代价绝对地址MM1寄存器RR0变址c(R)c+contents(R)1间接寄存器Rcontents(R)0间接变址c(R)contents(c+contents(R))1直接量#cc

5、18.2目标机器指令实例MOVR0,MMOV4(R0),Mcontents(4+contents(R0))MOV4(R0),Mcontents(contents(4+contents(R0)))MOV#1,R08.2目标机器8.2.2指令的代价指令代价取成1加上它的源和目的地址模式的附加代价指令代价MOVR0,R11MOVR5,M2ADD#1,R32SUB4(R0),12(R1)38.2目标机器a=b+c,a、b和c都静态分配内存单元MOVb,R0ADDc,R0代价=6MOVR0,a8.2目标机器a=b+c,a、

6、b和c都静态分配内存单元MOVb,R0ADDc,R0代价=6MOVR0,aMOVb,aADDc,a代价=68.2目标机器a=b+c,a、b和c都静态分配内存单元若R0,R1和R2分别含a,b和c的地址,则MOVR1,R0ADDR2,R0代价=28.2目标机器a=b+c,a、b和c都静态分配内存单元若R0,R1和R2分别含a,b和c的地址,则MOVR1,R0ADDR2,R0代价=2若R1和R2分别含b和c的值,并且b的值在这个赋值后不再需要,则ADDR2,R1MOVR1,a代价=38.3基本块和流图怎样

7、为三地址语句序列生成目标代码?

8、(1)prod=0prod=0;

9、(2)i=1i=1;

10、(3)t1=4ido{

11、(4)t2=a[t1]prod=prod+a[i]b[i];

12、(5)t3=4ii=i+1;

13、(6)t4=b[t3]}while(i<=20);

14、(7)t5=t2t4

15、(8)t6=prod+t5

16、(9)prod=t6

17、(10)t7=i+1

18、(11)i=t7

19、(12)ifi<=20goto(3)8.3基本块和流图8.3.1基本块基本块:连续的语句序列,控制流从它的开始进入,并从它的末尾离开再用有向边表示

20、基本块之间的控制流信息,就能得到程序的流图8.3基本块和流图三地址语句序列的划分基本块首先确定所有的入口语句序列的第一个语句是入口语句能由条件转移语句或无条件转移语句转到的语句是入口语句紧跟在条件转移语句或无条件转移语句后面的语句是入口语句每个入口语句到下一个入口语句之前的语句序列构成一个基本块8.3基本块和流图(1)prod=0(2)i=1(

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。