还剩25页未读,继续阅读
本资源只提供10页预览,全部文档请下载后查看!喜欢就下载吧,查找使用更方便
文本内容:
《源程序编译》ppt课件•源程序编译概述•词法分析目录•语法分析•中间代码生成•代码优化•目标代码生成01源程序编译概述定义与特点定义源程序编译是将高级语言编写的程序转换成机器语言或低级语言的过程,以便计算机能够执行特点编译过程具有静态、全局和一次性的特点,即在程序运行前一次性完成所有编译工作,且编译结果与运行环境无关编译过程的主要阶段词法分析中间代码生成将AST转换为中间代码,通常是三地将源代码分解成一系列的记号址代码或字节码(tokens),如关键字、标识符、运算符等语法分析代码优化根据语言的语法规则,将记号序列对中间代码进行优化,以提高执行转化为抽象语法树(Abstract效率Syntax Tree,AST)语义分析目标代码生成检查源代码的语义正确性,如类型将中间代码转换为机器语言或低级检查、函数和变量的声明等语言代码编译器的分类解释型编译器将源代码逐行解释并执行,不生成目标代码常见的解释型语言有Python、Ruby等编译型编译器将源代码一次性转换成目标代码,然后执行目标代码常见的编译型语言有C、C、Java等02词法分析词法分析器的功能生成词法单元词法分析器将源程序中的单词或符号转换成一种中识别源程序中的单词或符间表示形式,这种中间表示形式称为词法单元号词法分析器能够将源程序分解成一系列的单词或符号,这些单词或符号是编程语言的基识别注释和空白本组成部分词法分析器还能够识别并忽略源程序中的注释和空白,如空格、制表符和换行符等词法分析器的实现确定词法单元的语法规则在实现词法分析器之前,需要确定源程序中各个单词或符号的语法规则,这些规则定义了词法单元的构成编写正则表达式根据语法规则,可以编写正则表达式来描述各个单词或符号的模式实现扫描器扫描器是词法分析器的核心部分,它根据正则表达式逐个读取源程序中的字符,并判断是否匹配某个模式词法分析器的应用编译器设计代码生成代码优化词法分析器是编译器设计中的重词法分析器可以将源程序中的单通过词法分析器,可以对源程序要组成部分,它为后续的语法分词或符号转换成一种中间表示形进行优化,例如删除无用的代码、析和语义分析提供了基础式,这种中间表示形式可以用于简化计算等后续的代码生成03语法分析语法分析器的功能识别语法结构01语法分析器能够识别源程序的语法结构,将源代码分解为一系列的语法成分,如变量声明、表达式、控制流语句等语义检查02语法分析器在识别语法结构的同时,还会进行语义检查,确保源程序的语义是正确的,如类型匹配、变量使用前是否已声明等生成中间代码03在某些编译器的设计中,语法分析器还会生成中间代码,这是一种介于源代码和目标代码之间的代码形式,用于优化和后续的代码生成语法分析器的实现自顶向下的分析自顶向下的分析方法从文法的开始符号出发,逐1步推导得到目标符号,常用的算法有递归下降分析和预测分析自底向上的分析自底向上的分析方法从文法的终结符出发,逐步2归约到开始符号,常用的算法有LR分析和LALR分析工具与环境语法分析器的实现通常需要使用编译器工具集,3如词法分析器、语法分析器生成器等,以及相应的开发环境语法分析器的应用编译器设计01语法分析器是编译器设计中的核心部分,用于将源代码转化为可执行的目标代码代码优化02在编译器设计中,语法分析器可以与其他优化技术结合,对生成的中间代码进行优化,以提高程序的执行效率语言处理软件03除了编译器之外,语法分析器还可以用于其他语言处理软件,如代码格式化工具、静态代码分析工具等04中间代码生成中间代码的概念和作用中间代码的概念中间代码是源程序和目标代码之间的代码形式,通常采用一种简单的、与具体机器无关的指令形式中间代码的作用中间代码作为源程序与目标代码之间的桥梁,使得编译过程可以划分为多个阶段进行,同时方便进行代码优化和移植中间代码的生成过程词法分析语法分析语义分析中间代码生成将源程序分解为一系列的根据语言的语法规则,将对抽象语法树进行语义检将抽象语法树转换为中间记号(token),如关键记号序列转化为抽象语法查,如类型检查、函数和代码,通常采用三地址码字、标识符、运算符等树(Abstract Syntax变量的声明等的形式Tree,AST)中间代码的优化控制流优化数据流优化算法优化死代码消除通过消除冗余代码、通过分析和优化数据采用更高效的算法或删除程序中永远不会减少不必要的计算和流,减少冗余的计算改进现有算法,以减被执行到的代码,减条件判断,提高程序和存储,提高程序的少程序的运行时间少程序的体积和提高的执行效率性能运行速度05代码优化代码优化的概念和目的概念代码优化是指在保证程序功能正确的前提下,通过改进代码的算法、结构、数据结构等方式,提高程序的性能、可读性和可维护性目的代码优化的目的是为了提高程序的运行效率、减少资源占用、提高用户体验和降低维护成本代码优化的主要方法算法优化代码结构优化通过改进算法来提高程序的运行效率,通过优化代码结构来提高程序的性能例如使用更高效的排序算法、查找算和可维护性,例如减少嵌套层次、使法等用循环替代递归等数据结构优化编译器优化通过选择合适的数据结构来提高程序通过使用编译器的优化选项来提高程的性能和可维护性,例如使用哈希表、序的性能和可维护性,例如开启编译二叉树等数据结构器优化选项、使用内联函数等代码优化的应用场景010203游戏开发实时系统大数据处理游戏开发中需要进行大量的性能实时系统中需要进行严格的性能大数据处理中需要进行高效的性优化,以提高游戏的运行效率和优化,以确保系统能够及时响应能优化,以提高数据处理的速度用户体验和完成任务和效率06目标代码生成目标代码生成的过程词法分析语法分析语义分析将源代码分解为一系列的将词素按照语法规则组合对抽象语法树进行语义检词素或标记成抽象语法树(AST)查,如类型检查、函数和变量的解析等中间代码生成目标代码生成将抽象语法树转换为中间将中间代码转换为特定机代码,通常是三地址代码器语言或汇编语言的目标代码目标代码的格式和特点机器语言格式汇编语言格式可移植性优化直接对应特定机器的指令用助记符表示机器指令为了实现跨平台编译,需编译器会根据源代码和目集要将目标代码转换为与特标硬件的特点,对目标代定机器无关的中间代码码进行优化以提高执行效率目标代码的优化指令选择优化数据优化选择更有效率的指令替换源代码中的指令优化数据结构和使用方式,如常量传播、死代码消除等控制流优化内存访问优化优化程序的控制流程,如循环展开、循环优化内存访问模式,如缓存利用、对齐访不变量代码外提等问等THANKS感谢观看。
个人认证
优秀文档
获得点赞 0