计算机程序编译原理 第1章 引论

计算机程序编译原理 第1章 引论

ID:22262864

大小:105.50 KB

页数:18页

时间:2018-10-20

计算机程序编译原理 第1章 引论_第1页
计算机程序编译原理 第1章 引论_第2页
计算机程序编译原理 第1章 引论_第3页
计算机程序编译原理 第1章 引论_第4页
计算机程序编译原理 第1章 引论_第5页
资源描述:

《计算机程序编译原理 第1章 引论》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、编译原理CompilerPrinciples刘玉葆Lyb163com@163.com中山大学计算机科学系课程要求教学方式:理论(59)+实践(13)考核方式:考试(70%)+作业和实验(30%)先修课程:《离散数学》《数据结构》《汇编语言》《程序设计语言》参考书籍:吕映芝等,《编译原理》,清华大学出版社陈火旺等,《程序设计语言编译原理》,国防工业出版社李建中等译,《编译原理》,机械工业出版社([美]AlfredV.Aho,RaviSethi,JeffreyD.Ullman,Compilers:Principles,Techniques,andTools)第1章引论什么是编译程

2、序编译程序的工作过程编译程序的结构编译程序的组织方式编译程序的自展、移植和自动化编译程序的编写系统并行编译程序本章小结翻译程序程序设计语言1、低级语言:机器语言、汇编语言特点:用机器语言编写程序难写、难读、难修改、编写程序的效率低下2、高级语言:FORTRAN1、C语言等特点:独立与机器、接近自然语言、编写程序难写、难读、难修改、编写程序的效率高翻译程序计算机不能直接执行由用高级语言编写的程序,而只能执行机器语言程序,因此,用高级语言编写的程序必须由一个翻译程序翻译成机器语言程序。翻译的方式:(1)编译方式;(2)解释方式编译方式运行编译程序初始数据源程序目标程序结果系统子程

3、序编译即翻译先将源程序翻译成汇编语言或机器语言程序(目标程序),然后再执行它。解释程序源程序结果边翻译边执行解释方式和编译方式不同,解释方式并不事先生成目标程序然后再执行,而是对源程序边解释边执行。编译程序的工作过程词法分析,扫描源程序,分解和识别出每个单词,并把单词表示成相应的机内表示。语法分析,把单词符号串分解成各类语法单位,如表达式、语句等。语义分析,对源程序进行语义检查,保证标识符和常数的正确使用,为代码生成收集信息。中间代码生成,根据语义规则,将源程序表示成某种中间代码的形式,如三元式,四元式等。中间代码优化,调整和改变中间代码中某些操作的次序,最终生成更加高效的目

4、标代码。目标代码生成,将中间代码转换成等价的目标代码。词法分析例.某源程序片断如下:beginvarsum,first,count:real;sum:=first+count*10end.保留字begin保留字var标识符sum(id1)逗号,标识符first(id2)逗号,标识符count(id3)冒号:保留字real分号;标识符sum赋值号:=标识符first加号+标识符count乘号*整数10保留字end界符.id1:=id2+id3*10语法分析赋值语句标识符表达式表达式+表达式表达式标识符整数标识符:=表达式*id1:=id2+id3*10的语法树id1sumid2

5、 firstid3 count10:=id1+id2*id310(形式2)(形式1)语义分析id1:=id2+id3*10的语法树:=id1+id2*id310:=id1+id2*id310inttoreal语义结点中间代码生成以及优化源程序sum:=first+count*10生成的中间代码可以是:(inttoreal10-t1)(*id3t1t2)(+id2t2t3)(:=t3-id1)四元式:(运算符,运算对象1,运算对象2,结果)优化后的代码(*id310.0t1)(+id2t1id1)目标代码生成(*id310.0t1)(+id2t1id1)sum:=first+c

6、ount*10MOVFid3,R2MULF#10.0,R2MOVFid2,R1ADDFR1,R2MOVR1,id1编译程序的结构表格处理程序出错处理程序源程序语法分析程序语义分析成程序中间代码生成程序中间代码优化程序目标代码生成程序词法分析程序目标程序编译程序的组织方式1、前端和后端前端,主要依赖源程序,通常包括词法分析、语法分析、语义分析、中间代码生成和中间代码优化。后端,主要依赖硬件系统和机器指令系统,包括目标代码生成。2、分遍遍:对源程序或中间代码程序,从头至尾扫描一次并完成所规定的工作称为一遍。分遍的优点:多遍功能独立,相互联系简单,逻辑结构清晰。缺点:增加了编译程序

7、的长度和编译时间。编译程序的自展、移植与自动化1、高级语言的自编译性高级语言的自编译性,是指可以用这个语言来编写自己的编译程序。2、编译程序的自展技术具有自编译性的语言可以按照自展技术来构造其编译程序。将源语言L分解成核心部分L0与扩充部分L1,L2,…,Ln,使得对核心部分L0的一次或多次扩充得到源语言L3、编译程序的移植编译程序可以通过移植得到。4、编译程序的自动化Lex:词法分析生成器Yacc:语法分析生成器编译程序编写系统将有助于减轻编写翻译程序(包括编译程序、汇编程序、解释程序)工作的任何软件

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

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

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