编译技术 张莉第二部分-提高篇 电子教案-第15章-目标代码生成及优化.ppt

编译技术 张莉第二部分-提高篇 电子教案-第15章-目标代码生成及优化.ppt

ID:51619212

大小:1004.50 KB

页数:60页

时间:2020-03-26

编译技术 张莉第二部分-提高篇 电子教案-第15章-目标代码生成及优化.ppt_第1页
编译技术 张莉第二部分-提高篇 电子教案-第15章-目标代码生成及优化.ppt_第2页
编译技术 张莉第二部分-提高篇 电子教案-第15章-目标代码生成及优化.ppt_第3页
编译技术 张莉第二部分-提高篇 电子教案-第15章-目标代码生成及优化.ppt_第4页
编译技术 张莉第二部分-提高篇 电子教案-第15章-目标代码生成及优化.ppt_第5页
资源描述:

《编译技术 张莉第二部分-提高篇 电子教案-第15章-目标代码生成及优化.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、第十二章目标代码生成面向目标体系结构的代码生成和优化技术代码生成器在编译系统中的位置源程序前端优化器代码生成器目标程序符号表中间代码中间代码教学编译器架构代码生成器的输入源程序的中间表示线性表示(波兰式)三地址码(四元式)栈式中间代码(P-CODE/JavaBytecode)图形表示符号表信息代码生成器对输入的要求编译器前端已经将源程序扫描、分析和翻译成足够详细的中间表示中间语言中的标识符表示为目标机器能够直接操作的变量(位、整数、浮点数、指针等)完成了必要的类型检查,类型转换/检测操作已经加入到中间语言的必要位置完成语法和必要的语义检查,代码生成器可以认为输入中没有与语

2、法或语义错误目标程序的种类汇编语言生成宏汇编代码,再由汇编程序进行编译,连接,从而生成最终代码(.S/.ASM文件)包含绝对地址的机器语言执行时必须被载入到地址空间中(相对)固定的位置EXE(MS-WIN)、COM(MS-WIN)、A.OUT(Linux)可重定位的机器语言一组可重定位的模块/子程序可以用连接器装配后生成最终的目标程序(.obj/.o文件组)可动态加载的模块/子程序(DLL/.SO动态连接库)面向特定的目标体系结构生成目标代码目标体系结构可以是:某种微处理器,如X86、MIPS、ARM等某种被精心设计和定义的虚拟机或运行时系统,如Java虚拟机、C#运行时

3、系统、P-code虚拟机等。虚拟机:第十章介绍的面向P-code虚拟机,采用自顶向下的属性翻译文法生成代码的方法适用于其它虚拟机虚拟机的代码需要解释器解释或者即时编译器编译后才能运行本章内容主要内容:目标代码地址空间的划分,目标体系结构上存贮单元(如寄存器和内存单元)的分配和指派从中间代码(或者源代码)到目标代码转换过程中所进行的指令选择面向目标体系结构的优化面向微处理器体系结构的代码生成技术12.1现代微处理器体系结构简介指令集InstructionSet流水线和指令级并行PipelineandInstructionLevelParallelism存储结构和I/OMem

4、oryHierarchyandI/OSystems多处理器和线程级并行MultiprocessorandThreadLevelParallelism12.1.1指令集架构不同:算术逻辑单元ALU对存储单元的访问方式不同1、栈式指令集架构类似于P-code和Java虚拟机C=A+B代码:PUSHAPUSHBADDPOPC2、累加器式指令集架构C=A+B代码:LOADAADDBSTOREC代码短了,开销不一定小。直接访问内容寄存器架构寄存器-内存指令集架构寄存器-寄存器指令架构区别:是否可以直接内存寻址共性:内部有多个寄存器可以直接作为ALU指令的任一操作数优点:减少内存访问

5、减少指令数D=(A*B)+(B*C)栈式架构PUSHAPUSHBMULPUSHBPUSHCMULADDPOPD寄存器-寄存器架构LOADR1,ALOADR2,BLOADR3,CMULR1,R2,R4MULR2,R3,R5ADDR4,R5,R5STORER5,D8条指令,5条内存访问7条指令,4条存储访问寄存器-内存指令集架构处理器:称为ComplexInstructionSetComputers(CISC)架构计算机包括使用最广泛的IntelX86架构处理器、曾经十分辉煌,但现在已经退出历史舞台的DECVAX系列计算机。寄存器-寄存器指令集架构处理器:称为ReducedI

6、nstructionSetComputer(RISC)架构计算机包括正在广泛使用的Alpha、ARM,、MIPS、PowerPC、SPARC等微处理器。寄存器、缓存、内存、硬盘的存储访问特性12.1.2存贮层次架构寄存器的访问速度基本可以保证处理器在每个时钟周期内访问到需要的数据1980~2000年,CPU性能和内存访问性能的提高尽可能少地访问寄存器之外的存储设备但是,寄存器的数量极其有限32位X86微处理器上有8个通用寄存器Xscal/ARM,MIPS:大约16~32个通用寄存器分配策略很重要。对缓存的利用,对于大型数据结构有用缓存的管理单位是:缓存行。(数十或上百字节

7、)每次从内存载入的是一组地址连续的数据,而不仅仅是被访问数据通过循环交换(LoopInterchange)优化提高缓存命中率for(j=0;j<100;j=j+1)for(i=0;i<5000;i=i+1)x[i][j]=2*x[i][j];for(i=0;i<5000;i=i+1)for(j=0;j<100;j=j+1)x[i][j]=2*x[i][j];x[0][0],x[0][1],….,x[0][99],x[1][0],x[1][1],….,x[1][99],…,x[4999][0],x[4999][1],….,x[4

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。