- 1、本文档共25页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
川师编译原理课件12
第十二章 代码生成 例: 其中,假定d在基本块的出口是活跃的。 则得下列代码序列 方案1: 输入: T1:= A+B T2:=C+D T3:=E-T2 T4:=T1-T3 方案2: 输出: MOV C,R0 ADD D,R0 MOV E,R1 SUB R0,R1 MOV A,R0 ADD B, R0 SUB R1,R0 MOV R0,T4 2、结论 尽可能使一个结点的求值紧接着它的最左变量的求值之后。 3、启发式排序算法 while(存在未列入表的内部结点) { 选取一个未列入表的但其全部父结点均已列入表的结点n; 将n列入表中; 吉首大学:莫礼平 教学目的:让学生了解以基本块为单位的代码生成算法。 教学重点:寄存器的分配原则和分配算法。 课时分配:1学时。 教学过程: 12.1 代码生成概述 一、代码生成要考虑的主要问题 1、充分利用寄存器的问题 1)基本块中全局寄存器分配:不把寄存器平均分配给各个变量使用,而是从可用的寄存器中分出几个,固定分配给几个变量单独使用。 2)标准:以各变量在循环内需要访问主存单元的次数为标准。具体细节依赖于目标机器和操作系统。 2、选择计算机指令系统的问题 3、选择计算次序的问题 二、目标代码的分类 已定位的机器语言代码; 可重定位的机器语言代码; 汇编语言(宏汇编) 目标代码指令形式 (op source ,destination) ADD s,d // d+s SUB s,d //d-s MOV s,d //s ? d 三、目标代码质量指标 1、占用空间; 2、执行效率(主要依赖于寄存器的使用)。 四、目标代码的构造 1、输入:语法分析或进行优化后生成的中间代码; 2、输出:特定机器的机器语言或汇编语言。 3、目标代码的构造:与输出的目标机器紧密相关。 12.2 简单的代码生成器 一、寄存器分配 1、寄存器分配:在一个基本块范围内考虑。 2、寄存器分配原则 1)尽可能地让变量值或计算结果保留在寄存器中,直到寄存器用完为止,这样可减少访问内存次数,提高运行速度; 2)到基本块出口时,将变量值存放到内存,保证块外变量值都在内存中; 3)对在块内赋值或引用过,但在后继块中不再被引用的变量应尽早释放,以提高寄存器利用。 二、待用信息链 1、待用信息: 若在一个基本块中,变量A在四元式i中被定值,在i后面的四元式j中要引用A值,且从I到j之间没有其它对A的定值点,这时我们称j是四元式i中对变量A的待用信息或称下次引用信息,同时也称A是活跃的。 2、待用信息链: 若A被多次引用则可构成待用信息链与活跃信息链。通过从基本块的出口由后向前扫描,可对每个变量建立相应的待用信息链和活跃变量信息链。 3、计算待用信息的算法: 第一步: 1)在符号表中,增加“待用信息”栏和“活跃信息”栏; 2)对各基本块的符号表中的“待用信息”栏和“活跃信息”栏置初值,即:把“待用信息”栏置“非待用”,对“活跃信息”栏按在基本块出口处是否为活跃而置成“活跃”或“非活跃”; 3)假定变量都是活跃的,临时变量都是非活跃的。 第二步: 从基本块出口到基本块入口由后向前依次处理每个四元式。 对每个四元式i:A:= B op C ,依次执行下述步骤: a)把符号表中变量A的待用信息和活跃信息附加到四元式i上; b)把符号表中变量A的待用信息栏和活跃信息栏分别置为“非待用”和“非活跃”(由于在i中对A的定值只能在i以后的四元式中才能引用,因而对i以前的四元式来说是不活跃也不可能是待用的); C)把符号表中变量B和C的待用信息和活跃信息附加到四元式i上; d)把符号表中变量B和C的待用信息栏置为“i”,活跃信息栏置为“活跃”。 注意:以上a和b,c和d的次序不能颠倒。 例:若用A,B,C,D表示变量,用T,U,V表示中间变量,有四元式如下: (1) T:=A-B (2) U:=A-C (3) V:=T+U (4) D:=V+U 其名字表中的待用信息和活
您可能关注的文档
- 家庭养花营养土配制的方法.docx
- 家装贴壁纸步骤和注意事项.doc
- 密码学数学基础exercise 2st.ppt
- 密码学2013-A卷.doc
- 富宁县职称论文发表网-土石坝裂缝成因灌浆防渗体论文选题题目.docx
- 寒亭区职称论文发表-土建施工现场管理优化策略论文选题题目.docx
- 察隅县职称论文发表-城市燃气管道设计阶段施工阶段竣工阶段造价管理论文选题题目.docx
- 寒假作业圆锥曲线大题题目.doc
- 对“力的分解”的教材的思考和教学设计.doc
- 寒假指导二次根式及性质_练习.doc
- 场地脚手架工程施工方案(3篇).docx
- 2024年浙江省丽水市松阳县玉岩镇招聘社区工作者真题及参考答案详解一套.docx
- 2024年河南省郑州市惠济区古荥镇招聘社区工作者真题及答案详解一套.docx
- 2024年浙江省杭州市淳安县文昌镇招聘社区工作者真题及完整答案详解1套.docx
- 2024年浙江省台州市三门县小雄镇招聘社区工作者真题带答案详解.docx
- 2024年浙江省宁波市余姚市河姆渡镇招聘社区工作者真题及完整答案详解1套.docx
- 2024年浙江省丽水市景宁畲族自治县雁溪乡招聘社区工作者真题及答案详解一套.docx
- 2024年浙江省杭州市临安市板桥乡招聘社区工作者真题及答案详解一套.docx
- 2024年湖北省宜昌市点军区土城乡招聘社区工作者真题及答案详解一套.docx
- 2024年浙江省台州市路桥区桐屿街道招聘社区工作者真题附答案详解.docx
最近下载
- 江苏义务教育课程设置调整方案.doc VIP
- Unit2Differentfamilies单元整体教学说课(课件)-人教PEP版(级上册.pptx
- 014成人肢体及浅表躯干软组织肉瘤放疗靶区勾画和计划设计指南.pdf VIP
- sl176-2026水利水电工程施工质量评定SL223—2026水利水电建设工程验收规程.doc VIP
- 鲁教版八年级上册英语课文翻译.pdf VIP
- 世界地图空白图高清版.pdf VIP
- 2025年西学中中医内科学.pdf VIP
- 牙齿矫正协议书范本Word模板.docx VIP
- 标准图集-20S515-钢筋混凝土及砖砌排水检查井.pdf VIP
- 在用工业管道检验规定.pdf VIP
文档评论(0)