




已阅读5页,还剩32页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第12章 代 码 生 成,代码生成要考虑的主要问题 基本块的代码生成(在一个基本块范围内考虑如何充分利用寄存器的问题) 从dag生成代码,代码生成要考虑的主要问题,具体细节依赖于目标机器和操作系统,共同的问题:,1.,充分利用寄存器,基本块中,全局,寄存器分配:不把寄存器平均分配给各个变量使,用,而是从可用的寄存器中分出几个,固定分配给几个变量单,独使用。标准以各变量在循环内需要访问主存单元的次数,为标准。,2.,选择计算机指令系统,3.,选择计算次序,目标代码的三种形式,地址代真的机器代码,待装配的机器代码模块,汇编语言,(宏汇编),机器指令形式 (op source ,destination) ADD s,d / d+s SUB s,d /d-s MOV s,d /s d 机器指令开销 (cost) MOV R,M 开销 2 ADD #1 ,R 开销 2 MOV R0,R1 开销 1,目标机器的地址方式,a:=b+c 1. MOV b, R0 ADD c, R0 cost=6 MOV R0, a 2. MOV b, a ADD c, a cost=6 假定R0, R1和R2中分别存放了a, b和c的地址, 采用: 3. MOV *R1, *R0 ADD *R2, *R0 cost=2 假定R1和R2中分别包含b和c的值, 并且b的值在这个赋值以后不再需要, 则还可有 4. ADD R2, R1 MOV R1, a cost=3,T4:=A+B-(E-(C+D),T1:= A+B MOV A,R0 T2:=C+D ADD B,R0 T3:=E-T2 MOV C,R1 T4:=T1-T3 ADD D,R1 MOV R0,T1 MOV E, R0 SUB R1,R0 MOV T1,R1 SUB R0,R1 MOV R1, T4,T2:=C+D MOV C,R0 T3:=E-T2 ADD D,R0 T1:= A+B MOV E,R1 T4:=T1-T3 SUB R0,R1 MOV A,R0 ADD B, R0 SUB R1,R0 MOV R0,T4,简单的代码生成器,(基本块内),在一个基本块范围内考虑如何充分利用寄存器的问题:,l,尽可能地让该变量的值保留在寄存器中,l,尽可能引用变量在寄存器中的值,待用信息:若在一个基本块中,变量,A,在四元式,i,中被定,值,在,i,后面的四元式,j,中要引用,A,值,且从,i,到,j,之间没有其,它对,A,的定值点,这时我们称,j,是四元式,i,中对变量,A,的待用,信息或称下次引用信息,同时也称,A,是活跃的,若,A,被多次,引用则可构成待用信息链与活跃信息链。,可从基本块的出口由后向前扫描,对每个变量建立相应的待用,信息链和活跃变量信息链。,计算待用信息的算法:,对各基本块的符号表中的,“待用信息”栏和,“活跃信息”,栏置初值,即把,“待用信息”栏置,“非待用”,对,“活跃,信息”栏按在基本块出口处是否为活跃而置成,“活跃”或,“非活跃”。这里假定变量都是活跃的,临时变量都是非,活跃的。,符号表中增加“待用信息”栏和“活跃信息”栏,从基本块出口到基本块入口由后向前依次处理每个四元,式。对每个四元式,i:,A,:=,B op C,,依次执行下述步骤:,a,),把符号表中变量,A,的待用信息和活跃信息附加到四元式,i,上。,b,),把符号表中变量,A,的待用信息栏和活跃信息栏分别置为,“非待用”和,“非活跃”。,(由于在,i,中对,A,的定值只能,在,i,以后的四元式才能引用,因而对,i,以前的四元式来说,A,是不活跃也不可能是待用的),c,),把符号表中变量,B,和,C,的待用信息和活跃信息附加到四元,式,i,上。,d,),把符号表中变量,B,和,C,的待用信息栏置为,“,i,”,活跃信,息栏置为,“活跃”。,注意,以上,a,)和,b,),,c,)和,d,)的次序不能颠倒。,其中假定d在基本块的出口是活跃的。,代码序列,从dag生成目标代码,例:赋值语句,T,4,:=A+B-(E-(C+D),四元式序列,G,T,1,:,=A+B,T,2,:,=C+D,T,3,:,=E-T,2,T,4,:,=T,1,-T,3,DAG,:,A B E,C D,n9,n3,n8,n1,n2,n7,n6,n4,n5,T4,T1,T3,T2,+,-,-,+,T4:=A+B-(E-(C+D),T1:= A+B MOV A,R0 T2:=C+D ADD B,R0 T3:=E-T2 MOV C,R1 T4:=T1-T3 ADD D,R1 MOV R0,T1 MOV E, R0 SUB R1,R0 MOV T1,R1 SUB R0,R1 MOV R1, T4,T2:=C+D MOV C,R0 T3:=E-T2 ADD D,R0 T1:= A+B MOV E,R1 T4:=T1-T3 SUB R0,R1 MOV A,R0 ADD B, R0 SUB R1,R0 MOV R0,T4 原因:T4的计算紧跟在T1之后,尽可能使一个结点的求值紧接着它的最左变量的求值之后 启发式排序算法 (1) while存在未列入表的内部结点do (2) begin选取一个未列入表的但其全部父结点均已列 入表的结点n; (3) 将n列入表中; (4) while n的最左子结点m不是叶结点并且其所有 父结点均已列入表中do (5) begin将m列入表中; (6) n: =m (7) end (8) end,基于树重写的代码生成 例: ai:=b+1,: =,ind,+,Memb,const1,ind,+,consti,regsp,consta,regsp,+,+,regi,+,ADD Rj,Ri,regi,regj,: =,ind,+,Memb,const1,ind,+,consti,regSP,reg0,+,MOV #a, R0 ADD SP, R0 ADD i(SP),R0 MOV b,R1 INC R1 MOV R1, *R0,选择实验最终报告内容 1. 概述: 源、目标语言 实现工具(平台) 运行平台 2. 结构设计说明 各功能模块描述 3. 主要成分描述 (1) 符号表 (2) 运行时存储组织和管理 (3) 语法分析方法 (4) 中间代码表示 4. 开发过程和完成情况,12,3,基于树重写的代码生成,例:,ai:=b+1,替换,模版,动作,例子:,前缀表示,:=ind + ind +const,a,reg,sp,ind + const,i,+ mem,b,const,1,语法制导翻译模式,第13章,13,113,.,4,自学,补充:,程序设计语言的计算模型,:,l,命令式或过程式语言,l,应用式,(Applicative),或函数式,应用式语言,:,Lisp,和,ML,语法,:,function n(,function 2(function 1(data),),一个个函数应用在数
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025-2030中国AI制药行业技术路线及临床转化效率评估报告
- 2025至2030薄荷巧克力行业项目调研及市场前景预测评估报告
- 涉密装备管理-洞察及研究
- 2025年湖北省荆门市事业单位工勤技能考试考试题库及参考答案
- 2025年肺炎护理试题及答案
- 2025年反有组织犯罪法知识竞赛考试题库集(含答案)
- 2025年教师编制试题及答案
- 2025年学历类自考公共关系学-比较教育参考题库含答案解析(5套试卷)
- 2025年学历类自考中外文学作品导读-中国古代文学作品选(一)参考题库含答案解析(5套试卷)
- 小区租赁场地合同范本
- 深圳2025年重大项目计划申报
- 学生不住校申请书
- 2025年传动部件行业当前市场规模及未来五到十年发展趋势报告
- HBV感染中宿主细胞免疫应答与临床转归的关联探究
- 2025年福建省宁德市北京师范大学宁德实验学校公开招聘新任教师8人笔试备考题库及答案解析
- 2025年专业技术人员公需科目培训网上考试试题及参考答案
- 锚杆工程验收标准及记录表范本
- 特种设备作业人员Q1起重机指挥模拟考试题及答案2025
- 小学科学新教科版二年级上册第一单元 造房子教案(共6课)(2025秋)
- 2025至2030中国广播电视行业市场占有率及有效策略与实施路径评估报告
- 2025年秋期部编版五年级上册小学语文教学计划+教学进度表
评论
0/150
提交评论