《编译原理实践及应用》第1章编译原理概述.pptx
编译原理实践及应用主讲人:董明刚
教材及主要参考资料12五月2025第2页教材:编译原理实践及应用,黄贤英,清华大学出版社主要参考资料:编译原理,陈火旺,国防工业出版社编译原理(原书第2版)(龙书),ALFREDV.AHOetc著,赵建华郑滔等译,机械工业出版社,2008.12程序设计语言编译方法,肖军模,大连理工大学出版社编译原理,张素琴,吕映芝,清华大学出版社更多教材及参考资料参见编译原理精品课程网站。
在内存中:C语言程序voidmain(){intx,y,z;x=3;y=2;z=x+y;}内存地址内存内容单元名字………………200H3x:局部变量202H2y:局部变量204H5z:局部变量…………300H3A03302H3AE1304H3A02306H3AE2308HDA6C......3A71汇编语言程序movax,3movx,axmovbx,2movy,bxaddax,bxmovz,ax......序言数据区代码区?
第一章编译原理概述
第*页主要内容:各种翻译程序的概念,编译过程和阶段划分,编译程序的组成和结构,编译程序的构造方法重点掌握:编译程序工作的基本过程及其各阶段的基本任务,编译程序总框。123本章要求
1.1程序设计语言与翻译程序12五月2025第6页机器语言(machinelanguage)C70600000002汇编语言(assemblerlanguage)MOVX,2高级语言(high-levellanguage)X=2为什么要使用编译程序?
为什么要使用编译程序?12五月2025第7页机器语言(machinelanguage)C70600000002汇编语言(assemblerlanguage)MOVX,2高级语言(high-levellanguage)X=2
0102第*页计算机中的语言层次和翻译程序
第*页翻译程序:能够将某种语言写的程序转换成另一种语言的程序,而且后者与前者在逻辑上是等价的。编译程序:将高级程序设计语言程序翻译成逻辑上等价的低级语言(汇编语言,机器语言)程序的翻译程序。解释程序:将高级程序设计语言写的源程序作为输入,边解释边执行源程序本身,而不产生目标程序的翻译程序。什么叫翻译程序
翻译程序所处的层次12五月2025第10页高级语言语言处理程序操作系统汇编语言计算机硬件C编译程序C语言Basic解释程序Basic语言Fortran编译程序Fortran语言............
编译程序12五月2025第11页编译程序源程序目标程序计算机运行输入数据结果解释程序解释程序源程序输入数据结果
对编译程序的一些说明12五月2025第12页编译程序实质上是一个翻译程序,要注意等价变换本课程的任务就是讲解在这个转换过程中所涉及到的一些理论和方法,最后,使用这些理论和方法,自己编写一个小的编译器转换是一个总体的功能,要抓住总体结构,逐层细分,写编译器时要体现软件工程中软件设计的原则,自顶向下,逐层分解。编译器要完成的转换任务相当复杂,实现编译器时必须分步骤分阶段实现。分阶段实现的好处是能够简化程序的设计,当然也可以不分阶段实现。
0102诊断编译程序优化编译程序可变目标编译程序交叉编译程序03编译程序的分类
编译器的伙伴12五月2025第14页编辑器(editor)预处理器(Preprocessor)将源程序汇集到一起,宏展开等汇编程序(assembler)连接程序(linker)连接系统函数与系统资源装入程序(loader)重定位(relocation)Debugger,Profiler,ProjectManager
编译原理是讨论编译程序设计的基本理论、基本概念、基本方法什么是编译原理
1.2编译过程概述12五月2025第16页1、逻辑上分五个阶段:词法分析、语法分析、语义分析与中间代码生成、代码优化、目标代码生成每个阶段把源程序从一种表示变换成另一种表示词法分析语法分析语义分析与中间代码生成代码优化目标代码生成
按照词法分析、语法分析、语义分析等这种方式来划分阶段的原因是:每个阶段的复杂程度不同,所依据的理论基础不同,实现时采用的方法也不同。主要是方便理解和实现。划分阶段的依据是什么?每个阶段所实现的功能相对独立。
用一个例子说明各阶段的功能12五月2025第18页/*一个PASCAL语言的源程序*/programtest;/*thisisanexample,computingana