ch09--目标代码生成.ppt

ch09--目标代码生成.ppt

ID:48143206

大小:601.50 KB

页数:43页

时间:2020-01-17

ch09--目标代码生成.ppt_第1页
ch09--目标代码生成.ppt_第2页
ch09--目标代码生成.ppt_第3页
ch09--目标代码生成.ppt_第4页
ch09--目标代码生成.ppt_第5页
资源描述:

《ch09--目标代码生成.ppt》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、第9章目标代码生成知识点:基本块、程序流图下次引用信息代码生成算法§9目标代码生成9.1代码生成概述9.2基本块与流图9.3一个简单的代码生成程序29.1代码生成概述目标代码生成程序的任务将前端产生的中间代码转换为等价的目标代码对目标代码生成程序的要求:正确高质量本节内容:代码生成程序的位置代码生成程序设计有关的问题1.有效地利用目标机器的资源2.所生成的目标代码应高效地运行3一、代码生成程序的位置符号表前端代码优化代码生成中间代码目标代码源程序中间代码代码生成程序在编译模型中的位置代码生成程序的输入中间代码:经过语法分析/语义检查之后

2、得到的、正确的符号表记录了与名字有关的信息决定中间表示中的名字所代表的数据对象的运行地址假定:前期工作结果正确、可信中间代码足够详细、必要的类型转换符已正确插入、明显的语义错误已经发现、且正确恢复4代码生成程序的输出:目标代码目标代码形式绝对机器代码可把代码放在内存中固定的地方、立即执行可重定位机器代码.obj(DOS)、.o(UNIX)开发灵活,允许各子模块单独编译由连接装配程序将它们连接在一起,生成可执行文件汇编代码5二、代码生成程序设计有关的问题代码生成程序的具体细节依赖于目标机器和操作系统所有的代码生成程序固有的问题存储管理指令

3、选择寄存器分配计算顺序的选择6存储管理从名字到存储单元的转换由前端和代码生成程序共同完成三地址代码中的名字指向该名字在符号表中位置的指针符号表中的信息在处理声明语句时填入“类型”决定了它的域宽“地址”确定该名字在过程的数据区域中的相对位置上述信息用于确定中间代码中的名字对应的数据对象在运行时的地址7例如:中间代码与目标代码的对应对于四元式j:gotoiij目标代码...0n四元式100的机器码四元式地址长度...100(,,,)101(,,,)102(,,,)103(,,,)...n1212n+12n+12四元式101的机器码8

4、8n+20n+20四元式102的机器码1616n+36n+36四元式103的机器码44n+40...将四元式j的地址记入与i相关的链表中,等待回填四元式i的地址已有,可以直接生成机器指令8指令选择机器指令系统的性质决定了指令选择的难易程度一致性完整性指令的执行速度机器的特点对每一类三地址语句,可以设计它的代码框架如x:=y+z的代码框架可以是MOVy,R0ADDz,R0MOVR0,xa:=b+cd:=a+ea:=a+1MOVb,R0ADDc,R0MOVR0,aMOVa,R0ADDe,R0MOVR0,dMOVa,R0ADD#1,R0MOV

5、R0,aINCa9寄存器分配选出要使用寄存器的变量局部范围内在程序的某一点上寄存器指派可用寄存器专用寄存器通用寄存器寄存器对把寄存器指派给相应的变量变量需要什么样的寄存器操作需要什么样的寄存器10计算次序的选择计算次序影响目标代码的效率如:RISC体系结构的一种通用的流水线限制是:从内存中取出存入寄存器的值在随后的几个周期内是不能用的。在这几个周期期间,可以调出不依赖于该寄存器值的指令来执行,如果找不到这样的指令,则这些周期就会被浪费。所以,对于具有流水线限制的体系结构,选择合适的计算次序是必需的。有些计算顺序可以用较少的寄存器来保留中

6、间结果代码生成程序的设计原则能够正确地生成代码易于实现、便于测试和维护119.2基本块与流图基本块具有原子性的一组连续语句序列。控制从第一条语句流入,从最后一条语句流出,中途没有停止或分支如:t1:=a*at2:=b*bt3:=t1+t2基本块:t1:=a*at2:=a*bt3:=2*t2t4:=t1+t3t5:=b*bt6:=t4+t512基本块的划分方法确定入口语句,下面的语句是入口语句:三地址代码的第一条语句goto语句转移到的语句紧跟在goto语句后面的语句确定基本块,与每一个入口语句相应的基本块:从一个入口语句(含该语句)到下

7、一个入口语句(不含)之间的语句序列从一个入口语句(含该语句)到停止语句(含该语句)之间的语句序列13B1B2B3B5B4Pascal程序片断:i:=1;while(i<=10)dobegina[i]:=a[i]+b[i];i:=i+1end(1)i:=0(2)ifi<=10goto(4)(3)goto(17)(4)t1:=4*i(5)t2:=a-4(6)t3:=4*i(7)t4:=a-4(8)t5:=t4[t3]/*t5=a[i]*/(9)t6:=4*i(10)t7:=b-4(11)t8:=t7[t6]/*t8=b[i]*/(12)t9

8、:=t5+t8(13)t2[t1]:=t9(14)t10:=i+1(15)i:=t10(16)goto(2)(17)…14流图把控制信息加到基本块集合中,形成程序的有向图,称为流图(控制流图)流图的结点是基

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

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

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