《编译原理与技术》课程教学资源(PPT课件讲稿)代码优化

C代码优化
代码优化

代码优化的目标 ■提高最终目标代码的运行效率(性能) 时间:运行的更快 空间:降低内存需求 保持源程序的语义
•代码优化的目标 提高最终目标代码的运行效率(性能) - 时间:运行的更快 - 空间:降低内存需求 • 保持源程序的语义

代码优化的种类 窥孔优化 局部优化一基本块内优化 n全局优化一基本块间优化(过程内) 过程间优化一程序全局优化
•代码优化的种类 窥孔优化 局部优化-基本块内优化 全局优化-基本块间优化(过程内) 过程间优化-程序全局优化

代码优化的种类一窥孔优化 “孔”一未优化的目标代码片段( windows) ■窥孔优化种类: 删除冗余的存、取操作 e.g.movr0,a∥0->a mova,r0∥a->r0,可删除 删除不可达代码
•代码优化的种类-窥孔优化 “孔”-未优化的目标代码片段(windows) 窥孔优化种类: - 删除冗余的存、取操作 e.g. mov r0, a // r0 -> a mov a, r0 // a -> r0, 可删除 - 删除不可达代码

代码优化的种类一窥孔优化 e.g goto L1 goto Li2∥语句前无标号,死代码 L1: L2 控制流优化
•代码优化的种类-窥孔优化 e.g. goto L1 goto L2 // 语句前无标号,死代码 L1: … L2: … - 控制流优化

代码优化的种类一窥孔优化 goto L1 goto L2 L1: goto L2 L1: goto L2 if a<b goto L1 if a<b goto L2 L1: goto L2 L1: goto L2 goto L1/唯一跳转L1 if a b goto L2 跳羚1前是无条件 goto L3 L1: if a <b goto L2 L3: L3:
•代码优化的种类-窥孔优化 goto L1 … L1: goto L2 goto L2 … L1: goto L2 if a<b goto L1 … L1: goto L2 if a<b goto L2 … L1: goto L2 goto L1 //唯一跳转L1 … //L1前是无条件 跳转 L1: if a <b goto L2 L3: if a < b goto L2 goto L3 … L3:

代码优化的种类一窥孔优化 强度消弱、删除无用指令 e.g. MUL $8, RO -> ShiftLeft $3, RO ADD$0,R1∥删除,未改变R1 MUL$1,R2∥删除 利用目标机指令特点 eg.inc、 enter(建立栈帧) leave(清除栈帧) CSC系统的“复杂”寻址模式 其它优化措施,如常量合并、复写传播等
•代码优化的种类-窥孔优化 - 强度消弱、删除无用指令 e.g. MUL $8, R0 -> ShiftLeft $3, R0 ADD $0, R1 // 删除,未改变R1 MUL $1, R2 // 删除 - 利用目标机指令特点 e.g. inc、enter(建立栈帧)leave(清除栈帧) CISC 系统的“复杂”寻址模式 - 其它优化措施,如常量合并、复写传播等

代码优化的种类一局部优化 基本块和流图 基本块:能顺序执行的程序代码序列。其入口为 程序的第一代码 条件或无条件转移代码所转到的目标代码 跟在条件或无条件转移代码后的代码 基本块划分 相邻入口中间的代码序列(仅含前一入口) 某入口到程序的停止语句代码之间的代码序列 流图:由基本块按控制流方向形成的有向图 n基本块内优化,主要有: 常量传播、合并和公共子表达式删除 复写传播与死代码(无用代码)删除
代码优化的种类-局部优化 基本块和流图 - 基本块:能顺序执行的程序代码序列。其入口为: - 程序的第一代码 - 条件或无条件转移代码所转到的目标代码 - 跟在条件或无条件转移代码后的代码 - 基本块划分 - 相邻入口中间的代码序列(仅含前一入口) - 某入口到程序的停止语句代码之间的代码序列 - 流图:由基本块按控制流方向形成的有向图 基本块内优化,主要有: - 常量传播、合并和公共子表达式删除 - 复写传播与死代码(无用代码)删除

代码优化的种类一全局优化 ■基本块间优化一基本块间控制流与数据流 分析技术 ■优化措施主要有: 循环优化:80/20规则 不变式外提、归纳变量删除、强度消弱等 公共子表达式删除 常量传播、合并常量、复写传播 死代码(无用赋值)删除
代码优化的种类-全局优化 基本块间优化-基本块间控制流与数据流 分析技术 优化措施主要有: - 循环优化 :80/20 规则 - 不变式外提、归纳变量删除、强度消弱等 - 公共子表达式删除 - 常量传播、合并常量、复写传播 - 死代码(无用赋值)删除

°典型的优化编译器的组织 前端间起代码下、「代码1 优化器 生成器 控制流 数据流 变换 分析 分析
•典型的优化编译器的组织 前 端 代 码 生成器 代 码 优化器 数据流 变 换 分 析 控制流 分 析 中间表示 中间表示
按次数下载不扣除下载券;
注册用户24小时内重复下载只扣除一次;
顺序:VIP每日次数-->可用次数-->下载券;
- Progress of Concurrent Objects with Partial Methods.pptx
- 《网络搜索和挖掘关键技术 Web Search and Mining》课程教学资源(PPT讲稿)Lecture 12 Language Models.ppt
- 四川大学:《操作系统 Operating System》课程教学资源(PPT课件讲稿)Chapter 6 Concurrency - Deadlock(死锁)and Starvation(饥饿).ppt
- 《操作系统》课程教学资源(PPT课件讲稿)实时调度 Real-Time Scheduling.ppt
- 白城师范学院:《数据库系统概论 An Introduction to Database System》课程教学资源(PPT课件讲稿)第二章 关系数据库(2.1-2.3).ppt
- 《计算机算法设计与分析》课程教学资源(PPT课件)第8章回溯法.ppt
- 清华大学出版社:《计算机应用基础实例教程》课程教学资源(PPT课件讲稿,第二版,共七章,主编:吴霞,制作:李晓新).ppt
- 中国科学技术大学:《计算机体系结构》课程教学资源(PPT课件讲稿)绪论、第1章 量化设计与分析基础(主讲:周学海).ppt
- 北京大学:烟花算法的变异算子(PPT讲稿)Mutation Operators of Fireworks Algorithm.pptx
- Introduction to Text Mining 文本挖掘.pptx
- 《Managing XML and Semistructured Data》教学资源(PPT课件讲稿)Part 04 Compressing XML Data.ppt
- 《JAVA面向对象入门技术》教程教学资源(PPT课件讲稿)第二章 Java语言基础.ppt
- 北京大学:《项目成本管理》课程教学资源(PPT课件讲稿)项目范围计划(主讲:周立新).ppt
- 山东大学:《网站设计与建设》课程教学资源(PPT课件讲稿)第三部分 网站设计技术 第20章 MySQL数据库.ppt
- 程序设计工具(PPT课件讲稿)Software Program Tool.ppt
- 《Java Web应用开发技术与案例教程》教学资源(PPT讲稿)第7章 Java Web常用开发模式与案例.ppt
- 《面向对象程序设计》课程教学大纲(适用专业:信息与计算科学).pdf
- 《编译技术》课程教学资源(PPT课件讲稿)第六章 运行时存储空间的组织和管理.ppt
- 沈阳理工大学:《计算机网络》课程教学资源(PPT课件讲稿)第2章 IP技术.ppt
- 香港科技大学:Record Linkage for Big Data.pptx
- 《单片机应用技术》课程PPT教学课件(C语言版)第3章 MCS-51指令系统及汇编程序设计.ppt
- 《数据结构》课程教学资源(PPT课件讲稿)第八章 图.ppt
- 同济大学:《大数据分析与数据挖掘 Big Data Analysis and Mining》课程教学资源(PPT课件讲稿)Platforms for Big Data Mining(主讲:饶卫雄).ppt
- 《计算机网络》课程教学资源(PPT讲稿)网络安全(访问控制、加密、防火墙).ppt
- 水平集方法与图像分割 Level set method and image segmentation.pptx
- 北京师范大学:《计算机文化基础》课程教学资源(PPT课件讲稿)08 网页制作基础知识(赵国庆).ppt
- 《C语言程序设计》课程教学资源(PPT讲稿)第1章 程序设计和C语言.pptx
- 《计算机组装与维护》课程教学资源(PPT课件讲稿)第十一章 计算机数据恢复技术.ppt
- 贵州大学:计算机应用基础(PPT课件讲稿)计算机基础知识.pdf
- 《计算导论与程序设计》课程教学资源(PPT课件讲稿)Chap 5 函数.ppt
- 《计算机网络 Computer Networking》课程教学资源(PPT课件讲稿)Chapter 08 Network Security.ppt
- 《计算机网络与通信》课程教学资源(PPT课件)Chapter 8 传输层.ppt
- 《数据结构与算法分析》课程教学资源(PPT讲稿)Lists, Stacks and Queues.ppt
- 沈阳理工大学:《Visual Basic 6.0程序设计》课程教学资源(PPT课件讲稿)第三章 VB基本语言.ppt
- 南京大学:《计算机网络 Computer Networks》课程教学资源(PPT课件讲稿)简介、第一章 引论(谭晓阳).ppt
- 中国科学技术大学:《Linux操作系统分析》课程教学资源(PPT课件讲稿)第一章 绪论(主讲:陈香兰).ppt
- 西华大学:《电子商务概论》课程教学资源(PPT课件讲稿)第4章 电子商务的安全问题.ppt
- 北京大学:未来互联网体系结构(PPT讲稿)Future Internet Architecture(Introduction).pptx
- 《计算机组成原理》课程教学资源(PPT课件讲稿)第5章 输入输出系统.ppt
- 清华大学出版社:《物流电子商务》课程教学资源(PPT课件讲稿,共八章,主编:董铁,制作:李晓新).ppt