- 1、本文档共27页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
【编译原理课件】cha12 代码生成
* * 第12章 代码生成 基本问题 目标机器模型 一个简单的代码生成器 寄存器分配(略) DAG的目标代码(略) 作业 课程目录 * * 代码生成概述 p274 逻辑阶段 编译程序的最后一个阶段 输入和输出 中间代码 等价的目标代码 目标代码的一般形式 绝对机器代码 所有地址均已定位 优点:可立即执行 缺点:不能独立编译各模块,灵活性差 可再定位机器代码 需经连接与装入才可执行 优点:子程序可单独编译 缺点:需经汇编器辅助代码生成 汇编语言代码 优点:目标程序好读、可移植 缺点:需经汇编器辅助代码生成 * * 12.1.1 基本问题 p274 代码生成器的设计环境 要依赖于目标机器、指令系统和操作系统。 输入 源程序的中间表示、符号表中的信息。 目标程序 汇编语言。 指令选择 指令集丰富、选择合适。 寄存器分配 有效合理使用寄存器、提高代码质量。 计算顺序选择 影响代码的有效性。 * * 目标代码生成器的基本设计要求 使所生成的目标代码尽可能的短 能较充分地发挥目标计算机可用资源的效率 例如: 尽可能地使用执行速度快的指令 充分利用计算机的寄存器和变址器,以节省访问内存的时间 章节目录 * * 12.2.1 目标机模型 p278 问题提出 代码生成程序总是针对某一具体的计算机实现的 因此,试图脱离具体的计算机来一般性讨论生成高效的目标代码的全部细节是不合适的,也是不可行的 然而又不可能只局限于某一特定的计算机 折中方案 定义一种假想的计算机模型,具有实际计算机的 共同特征 依此模型为依据,讨论代码生成中的某些主要问题 * * 目标机模型 p278 指令形式(寻址方式) (Ri)—通用寄存器Ri中的内容 (M)—内存单元M中的内容 类 型 指令形式 意义(设op是二目运算符) 直接地址型 op Ri,M (Ri)op(M)?Ri 寄存器型 op Ri,Rj (Ri)op(Rj)?Ri 变址型 op Ri,c(Rj) (Ri)op((Rj)+c)?Ri 间接型 op Ri,*M (Ri)op((M))?Ri op Ri,*Rj (Ri)op((Rj))?Ri op Ri,*c(Rj) (Ri)op(((Rj)+c))?Ri 直接操作数型 op Ri,#X (Ri)op X ?Ri * * 目标机模型 p278 常备指令 arc—源操作数 dst—目的操作数 指令形式 意 义 举 例 LD dst,arc (arc)?dst LD R1,B (B)?R1 LD R1,#1 1?R1 LD R1,*(4(R0))(((R0)+4))?R1 ST arc,dst (arc)?dst ST R1,B (R1)?B ADD dst,arc (dst)+(arc)?dst ADD R1,R0 (R1)+(R0)?R1 SUB dst,arc (dst)-(arc)?dst SUB R1,T1 (R1)-(T1)?R1 MUL dst,arc (dst)*(arc)?dst MUL R1,D (R1)*(D)?R1 DIV dst,arc (dst)/(arc)?dst DIV R1,A (R1)/(A)?R1 章节目录 * * 执行代价 衡量目标程序工作效率的指标 目标程序的长短 目标程序的执行时间——取决于访问内存的次数 一条指令执行代价 定义:执行该指令所需访问内存的总次数 值=该指令访问内存的次数+1(取指令访问一次内存) 目标程序的执行代价 定义:各条指令执行代价总和 特点:该值越低目标程序的执行效率越高 产生目标代码时,应尽可能选用执行代价较小的指令 * * 执行代价举例 指令 执行代价 LD R0,R1 (0+1) 1 LD R1,M (1+1) 2 ST R1,T1 (1+1) 2 ADD R1,#1 (1+1) 2 ADD R0,*R1 (1+1) 2 LD R0,*M (2+1) 3 对三地址代码A:=B+C 若B,C分别在R0,R1,且B值以后不用,则 (1)ADD R0,R1 (0+1) 1 若B在R0,C在内存,且B值以后不用,则 (2)ADD R1,C (1+1) 2 或(3)LD R1,C ADD R0,R1 (1+2) 3 第(3)种特别适合于C值在块内还要被引用的
您可能关注的文档
- 【新课标】2012高三数学文《学海导航》一轮复习课件:第11章 11.2总体分布的估计、总体期望值和方差的估计.ppt
- 【新步步高】2016年高考物理大一轮总复习课件(江苏专版) 2.3 相互作用.ppt
- 墨与彩的韵味概要.ppt
- 声声慢 上课概要.ppt
- 【新版】(新人教版)2014年九年级物理全册 15-4 电流的测量 课件(25张ppt).ppt
- 墨梅图题诗概要.ppt
- 声光复习专题概要.ppt
- 【新人版】九年级物理全册课件第22章能源与可持续发展全章课件.ppt
- 声声慢.公开课ppt概要.ppt
- 声声慢.正式ppt概要.ppt
- 2022-2023学年下学期七年级期末考试英语模拟卷(连云港专用)(原卷版).docx
- 江苏省泰兴市2021-2022学年八年级下学期期末英语试题(原卷版).docx
- 外研版英语2021-2022学年八年级下册期末复习卷四(含听力)(解析版).docx
- 2023年中考二轮小题必刷12 定语从句(原卷版).docx
- 精品解析:河北省唐山市路南区2021-2022学年七年级下学期期末英语试卷(原卷版).docx
- 期末考点大串讲-重点句子(解析版).docx
- 期末复习Unit 5-Unit 6 Grammar 语法专项练习2022-2023学年牛津译林版七年级英语下册.docx
- 2023暑假作业 第03练 频度副词(解析版).docx
- 2023暑假作业 第05练 祈使句(解析版).docx
- 专题11.阅读回答问题(期末真题精练精析)(解析版).docx
文档评论(0)