代码生成课件.ppt

代码生成课件.ppt

ID:57012427

大小:1.09 MB

页数:82页

时间:2020-07-26

代码生成课件.ppt_第1页
代码生成课件.ppt_第2页
代码生成课件.ppt_第3页
代码生成课件.ppt_第4页
代码生成课件.ppt_第5页
资源描述:

《代码生成课件.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、第八章 代码生成 CodeGeneration9/5/20211前端代码优化器中间代码源程序代码生成器中间代码目标程序图8.1代码生成器的输入和输出2编译原理代码优化器中间代码目标程序指令选择指令调度寄存器分配代码生成器的三个任务3编译原理8.1代码生成器设计中的问题DependonthetargetlanguageandOSMemorymanagementInstructionselectionRegisterallocationEvaluationorder4编译原理8.1.1代码生成器设计的输入IRofthesourceprogramproducedbythefronten

2、dSymboltable,usedtodeterminetherun-timeaddressofthedataobjectsdenotedbythenamesintheIRAssumetheinputisfreeoferrortypecheckinghastakenplaceobvioussemanticerrorshavebeendetected5编译原理8.1.2Targetprogram(Outputofthecodegenerator)AbsolutemachinelanguageFixedlocationinmemory,immediatelyexecutedReloc

3、atablemachinelanguage(objectmodule)可重定位目标模块允许程序模块分别编译调用其它先前编译好的程序模块汇编语言程序编译器不必重复汇编器的工作从教学角度,增加可读性6编译原理8.1.3Instructionselection指令选择目标机器指令系统的性质决定了指令选择的难易程度,指令系统的一致性和完整性是重要的因素指令的速度和机器特点是重要的因素若不考虑目标程序的效率,指令的选择是直截了当的。7编译原理例,三地址语句x=y+z (x,y和z都是静态分配)LDR0,y/*把y装入寄存器R0*/ADDR0,R0,z/*z加到R0上*/STx,R0/*把R

4、0存入x中*/8编译原理逐个语句地产生代码,常常得到低质量的代码。例,语句序列a=b+cd=a+e的代码如下LDR0,bADDR0,R0,cSTa,R0LDR0,aADDR0,R0,eSTd,R0第四条是多余的指令若a不再使用,第三条也多余9编译原理所生成代码的质量取决于它的执行速度和长度。例,如果目标机器有加1指令(INC),则 a=a+1可以直接用一条指令INCa实现,而不是指令序列:LDR0,aADDR0,R0,#1STa,R010编译原理8.1.4Registerallocation寄存器分配运算对象处于寄存器中的指令通常比运算对象处于内存的指令要短一些,执行也快一些。充

5、分利用寄存器对生成好的代码尤为重要。寄存器分配选择驻留在寄存器中的一组变量寄存器指派registerassignment挑选变量要驻留的具体寄存器NP-completeproblem11编译原理8.1.5choiceofevaluationorder计算次序的选择某种计算次序可能会比其它次序需要较少的a寄存器来保存中间结果AlsoanNP-completeproblem.12编译原理8.2目标语言目标机器的指令系统字节寻址四字节组成一个字有n个通用寄存器R0,R1,…,Rn-113编译原理加载运算保存运算计算运算无条件跳转条件跳转指令形式14编译原理寻址模式和它们的汇编语言形式及

6、相关开销寻址方式直接地址方式寄存器方式间接寄存器方式索引方式间接索引方式字面常量开销100111地址XRcontents(R)c+contents(R)contents(c+contents(R))汇编形式XR*Rc(R)*c(R)#C15编译原理指令实例16编译原理Instructioncosts指令开销指令开销:它的源和目的地址模式的附加开销再加上1指令costLDR0,R11LDR0,X2LDR1,*100(R2)217编译原理例三地址语句x=y–z的机器指令序列:LDR2,yLDR2,zSUBR1,R1,R2STx,R1三地址语句b=a[i]的机器指令序列(数组a的元素占

7、8个字节):LDR1,iMULR1,R1,8LDR2,a(R1)STb,R218编译原理例三地址语句a[j]=c的机器指令序列:LDR1,cLDR2,jMULR2,R2,8STa(R2),R1三地址语句x=*p的机器指令序列:LDR1,pLDR2,0(R1)STx,R219编译原理例三地址语句*p=y的机器指令序列:LDR1,pLDR2,yST0(R1),R2三地址语句ifx

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

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

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