国家开放大学编译原理核心内容精简版_第1页
国家开放大学编译原理核心内容精简版_第2页
国家开放大学编译原理核心内容精简版_第3页
国家开放大学编译原理核心内容精简版_第4页
国家开放大学编译原理核心内容精简版_第5页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

国家开放大学编译原理核心内容精简版一、基础概述:编译的基本概念1.核心定义编译程序是将高级语言源程序(如C、Java)翻译为逻辑等价的低级语言目标程序(汇编语言、机器语言)的翻译程序,翻译完成后再执行目标程序。与解释程序的区别:解释程序逐句解释执行源程序,不生成独立的目标程序;编译程序一次性完成翻译,生成独立的目标程序,执行效率更高。2.编译的核心阶段编译过程分为6个核心阶段,同时有两个贯穿所有阶段的支撑模块:前端:与源语言相关的阶段,包括词法分析、语法分析、语义分析、中间代码生成,负责分析源程序后端:与目标机器相关的阶段,包括代码优化、目标代码生成,负责生成目标代码符号表管理:贯穿所有阶段,记录源程序中标识符的属性(类型、作用域、地址等),供各阶段查询使用错误处理:贯穿所有阶段,检测并报告源程序中的错误,方便开发者调试二、词法分析词法分析是编译的第一个阶段,是编译的基础:核心任务将源程序的字符流,按照词法规则,分割为一个个具有独立意义的单词(记号),比如关键字、标识符、常数、运算符、分隔符等,同时过滤掉空格、注释等无关字符。核心技术基于正规式和\\有限自动机(FA)\\实现,是词法分析工具(如Lex)的理论基础,能够高效识别单词的规则。三、语法分析语法分析是编译的核心阶段之一:核心任务将词法分析输出的单词流,按照语法规则,分析源程序的语法结构,构造出语法树,同时检查源程序中的语法错误(比如括号不匹配、语句格式错误等)。核心考点文法的分类:Chomsky文法分类,0型(短语文法)、1型(上下文有关文法)、2型(上下文无关文法,对应大多数编程语言的语法)、3型(正规文法,对应词法规则)语法分析方法:自上而下分析:从开始符号出发,推导输入串,代表是LL(1)分析法,特点是简单易懂,适合手工实现自下而上分析:从输入串出发,归约到开始符号,代表是LR分析法,特点是能力强,能处理大多数文法,适合自动工具生成四、语义分析语义分析负责检查源程序的语义正确性:核心任务对语法树进行语义检查,比如类型检查(比如整型和字符串不能直接相加)、作用域检查(变量未定义就使用)、数组越界检查等,确保源程序的语义符合语言规则。核心技术基于语法制导翻译和属性文法,在语法分析的同时,计算文法符号的属性,完成语义的处理,为后续的中间代码生成做准备。五、中间代码生成核心任务将语义分析后的结果,转换为一种与具体机器无关的中间表示形式,这种形式便于后续的代码优化,也便于编译器的移植(一套中间代码可以适配不同的目标机器)。常见的中间代码形式四元式:最常用的中间代码,形式为(运算符,操作数1,操作数2,结果),比如a=b+c对应的四元式是(+,b,c,t1)、(=,t1,_,a)逆波兰式(后缀式):将运算对象写在前面,运算符写在后面,便于栈式计算,比如a+b*c对应的后缀式是abc*+三元式、间接三元式等其他形式六、运行时存储管理运行时存储管理负责管理目标程序运行时的内存空间:核心分配方式静态存储分配:编译时就确定所有变量的存储位置,运行时不改变,适合没有递归的简单语言栈式存储分配:用栈来管理过程调用的活动记录,过程调用时分配,返回时释放,支持递归,是大多数编程语言的默认方式堆式存储分配:动态分配内存,由程序员手动管理(比如C的malloc)或者垃圾回收自动管理,用于动态数据结构(比如链表、对象)核心考点过程调用的存储管理,比如嵌套过程语言的Display表,用于解决非局部变量的访问问题。七、代码优化代码优化是对中间代码或者目标代码进行变换,在不改变程序语义的前提下,提高代码的运行效率、减少内存占用:常见的优化类型局部优化:针对基本块(顺序执行的代码段)的优化,比如常数合并、删除死代码、DAG(有向无环图)优化循环优化:针对循环的优化,是优化效果最明显的部分,比如:代码外提:将循环中不变的代码提到循环外面强度削弱:将耗时的运算转换为更简单的运算,比如把乘法转换为加法删除归纳变量:优化循环的变量,减少运算八、目标代码生成这是编译的最后一个阶段:核心任务将优化后的中间代码,转换为目标机器的目标代码,可以是汇编代码,也可以是机器代码。核心问题指令选择:选择合适的目标机器指令,实现中间代码的运算寄存器分配:将变量分配到寄存器中,减少内存访问,提高运行速度指令调度:调整指令的执行顺序,充分利用处理器的流水线,提高执行效率课程核心总结《编译原

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论