- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
编译第12章
代码生成 第十二章 代码生成 教学要求 了解代码生成的任务及目标代码的形式、目标代码结构、简单的代码生成器和代码生成研究现状。 了解基本块的代码生成(在一个基本块范围内考虑如何充分利用寄存器的问题) 12.1 代码生成概述 代码生成的任务:把通过语法分析和优化后的中间代码转换成特定机器上的机器语言或汇编语言。 代码生成器的设计重要考虑目标代码的质量问题。衡量目标代码的质量主要从占用空间和执行效率上考虑。 具体细节依赖于目标机器(机器结构、指令格式、字长及寄存器的个数和种类),指令的语义,操作系统和存储管理。 12.2 一个计算机模型 假定一个M计算机有N个通用寄存器R0,R1…,Rn-1. Op表示运算符,M表示内存单元,C表示常数,*表示间接寻址 变量名表示变量所在单元。 指令形式有以下四种: 指令形式 指令的意义说明 一、寄存器分配原则: 尽可能地让该变量的值保留在寄存器中。 尽可能引用变量在寄存器中的值。 对于在基本块内后边不被引用的变量所占用的寄存器应尽早释放,以提高寄存器的利用率。 二、待用信息链表法 参见P273的图12.1 和P274的图12.2 例如 代码序列 12 .4 代码生成研究现状 中间语言的选择 找一种中间语言,既能适用大多数高级语言也适用各种计算机。相当困难。 限定范围内的中间语言 限定几种高级语言和几中计算机 在计算机限定情况下的中间语言(MSIL-Machine Specific Intermediate Language) 高级语言限定情况下的中间语言(LSIL- Language Specific Intermediate Language ) 假想式抽象机:包含基本运算和数据类型的中间语言描述一种或一类高级语言的特性。 代码生成的自动化研究 解释性代码生成 样板匹配代码生成法 表驱动代码生成法 * * 目标代码的三种形式: 地址代真的机器代码 待装配的机器代码模块 汇编语言 代码生成要考虑的主要问题:充分利用寄存器 (Ri) op ((M))=Ri (Ri) op ((Rj))=Ri (Ri) op((Rj)+c)=Ri Op Ri, *M Op Ri, *Rj Op Ri, *c(Rj) 间接型 op(M)=Ri Op Ri, M 一目运算 (Ri) op ((Rj)+C)=Ri Op Ri, c(Rj) 变址型 (Ri) op (Rj)=Ri Op Ri, Rj 寄存器型 (Ri) op (M)=Ri Op Ri, M 直接地址型 意义(设op是二目运算) 指令形式 类型 比较A,B两个单元的内容,将内部特征寄存器CT; 置成相应状态(:0,= :1,:2) CMP A,B 无条件转到X单元 J X 把寄存器R 的内容存到B单元,即(Ri )= B ST Ri, B 把B单元的内容取到寄存器R,即(B)= Ri LD Ri, B 意义 指令 简单的代码生成器(基本块内):输入四元式的中间代码,输出M计算机的目标代码. 在一个基本块范围内考虑如何充分利用寄存器的问题。 12.3 一个简单的代码生成器 待用信息:若在一个基本块中,变量 A 在四元式 i 中被定 值,在 i 后面的四元式 j 中要引用 A 值,且从 i 到 j 之间没有其 它对 A 的定值点,这时我们称 j 是四元式 i 中对变量 A 的待用 信息或称下次引用信息,同时也称 A 是活跃的,,若 A 被多次 引用则可构成待用信息链与活跃信息链。 可从基本块的出口由后向前扫描,对每个变量建立相应的待用 信息链和活跃变量信息链。 目的:在基本块内还要被引用的变量尽可能保存在寄存器内。 1、定义 2、计算待用信息的算法: (1)对各基本块的符号表中的 “待用信息”栏和 “活跃信息” 栏置初值,即把 “待用信息”栏置 “非待用”,对 “活跃 信息”栏按在基本块出口处是否为活跃而置成 “活跃”或 “非活跃”。这里假定变量都是活跃的,临时变量都是非 活跃的。 符号表中增加“待用信息”栏和“活跃信息”栏 从基本块出口到基本块入口由后向前依次处理每个四元 式。对每个四元式 i: A := B op C ,依次执行下述步骤: a ) 把符号表中变量 A 的待用信息和活跃信息附加到四元式 i 上。 b ) 把符号表中变量 A 的待用信息栏和活跃信息栏分别置为 “非待用”和 “非活跃”。 (由于在 i 中对 A 的定值只能 在 i 以后的四元式才能引用,因而对 i 以前的四元式来说 A 是不活跃也不可能是待用的) c ) 把符号表中变量 B 和 C 的待用信息和活
您可能关注的文档
最近下载
- (高清版)B-T 24622-2022 绝缘子表面憎水性测量导则.pdf VIP
- 医院药品采购管理课件PPT.pptx VIP
- 个人简历模板表格简历模板免费下载.docx VIP
- 2025至2030中国付费自习室行业市场深度研究及发展前景投资可行性分析报告.docx VIP
- 伤口敷料特性及选择.pptx VIP
- 1.3 绝对值(6大题型)(分层练习)(原卷版).docx VIP
- 山东省济南市市中区实验中学2024-2025学年高一上学期10月月考英语试题(含答案).docx VIP
- 高一学生数学知识点公式总结.doc VIP
- 22J611-4图集—金属结构大门.pdf VIP
- NetMizer用户使用手册.doc VIP
文档评论(0)