编译原理与实现第1章编译概述课件

上传人:hs****ma 文档编号:589872427 上传时间:2024-09-11 格式:PPT 页数:54 大小:1.01MB
返回 下载 相关 举报
编译原理与实现第1章编译概述课件_第1页
第1页 / 共54页
编译原理与实现第1章编译概述课件_第2页
第2页 / 共54页
编译原理与实现第1章编译概述课件_第3页
第3页 / 共54页
编译原理与实现第1章编译概述课件_第4页
第4页 / 共54页
编译原理与实现第1章编译概述课件_第5页
第5页 / 共54页
点击查看更多>>
资源描述

《编译原理与实现第1章编译概述课件》由会员分享,可在线阅读,更多相关《编译原理与实现第1章编译概述课件(54页珍藏版)》请在金锄头文库上搜索。

1、编译原理及实现编译原理及实现任课教师:任课教师:韦艳艳韦艳艳联系电话:联系电话:E-mail:编译原理与实现第1章编译概述编译原理编译原理-课前思考课前思考w为什么有些语言规定标识符不能超过为什么有些语言规定标识符不能超过8 8个字符?而有些语言个字符?而有些语言对标识符的长度无限制?对标识符的长度无限制? w为什么有些语言能实现递归,而有些语言不能?为什么有些语言能实现递归,而有些语言不能? wC C语言规定数组下界为语言规定数组下界为0 0,上界为声明的数减,上界为声明的数减1 1,为什么?,为什么? w嵌套的嵌套的IFIF语句规定语句规定ELSEELSE与上面最近的与上面最近的IFIF配

2、对,为什么?配对,为什么?w为什么有些程序运行一段时间后会导致内存溢出?为什么有些程序运行一段时间后会导致内存溢出?w为什么为什么JavaJava实现了实现了“一次编写,到处运行一次编写,到处运行”?w 编译原理与实现第1章编译概述学习目的学习目的 了解和掌握设计和构造编译了解和掌握设计和构造编译程序的基本原理、基本技术及其程序的基本原理、基本技术及其实现方法,加深对计算机系统的实现方法,加深对计算机系统的了解,培养和提高计算(机)思了解,培养和提高计算(机)思维能力。维能力。编译原理与实现第1章编译概述各章节内容各章节内容第第1 1章章 编译概述(编译概述(2 2课时)课时)第第2 2章章

3、文法和语言(文法和语言(6 6课时)课时)第第3 3章章 词法分析(词法分析(6+46+4课时)课时)第第4 4章章 语法分析语法分析-自顶向下分析(自顶向下分析(6+46+4课时)课时)第第5 5章章 语法分析语法分析-自底向上分析(自底向上分析(6 6课时)课时)第第6 6章章 语法制导翻译技术(语法制导翻译技术(6 6课时)课时)第第7 7章章 符号表管理技术符号表管理技术 (2 2课时)课时)第第8 8章章 程序运行时的存储组织及管理程序运行时的存储组织及管理 (2 2课时)课时)第第9 9章章 语义分析和代码生成(语义分析和代码生成(6+46+4课时)课时)第第1010章章 代码优化

4、(代码优化(2 2课时)课时)编译原理与实现第1章编译概述学习要求学习要求n认真听课认真听课n积极练习积极练习n课后复习课后复习编译原理好难!编译原理好难!编译原理与实现第1章编译概述参考书目参考书目n张幸儿编,张幸儿编,计算机编译原理计算机编译原理编译程序编译程序构造实践构造实践(第二版第二版),科学出版社,科学出版社,20092009年年n刘磊等编,刘磊等编,编译程序的设计与实现编译程序的设计与实现,高等教育出版社,高等教育出版社,20042004年年n赵克佳等译,赵克佳等译,现代编译原理现代编译原理C C语言描述语言描述,人民邮电出版社,人民邮电出版社,20062006年年n张素琴,吕映

5、芝等编,张素琴,吕映芝等编,编译原理编译原理(第(第2 2版),清华大学出版社,版),清华大学出版社,20052005年年n赵建华等译,赵建华等译,编译原理编译原理(第第2版版),机,机械工业出版社,械工业出版社,20092009年年编译原理与实现第1章编译概述编译原理编译原理(原书第原书第2版版)作者:作者:(美美)AlfredV.AhoMonicaS.LamRaviSethiJeffreyD.Ullman译者:译者:赵建华赵建华郑滔郑滔戴新宇戴新宇出版社:机械工业出版社出版社:机械工业出版社编译领域里程碑式的经典著作编译领域里程碑式的经典著作龙书龙书原版封面原版封面中文版封面中文版封面编译

6、原理与实现第1章编译概述课程学习网站课程学习网站n清华大学清华大学n北京航空航天大学北京航空航天大学http:/compile/n武汉大学武汉大学编译原理与实现第1章编译概述题 外 话w基本:基本:完成课程学习,通过考试,获得学分。完成课程学习,通过考试,获得学分。w提高:提高:能够将所学知识和内容用于解决实际问题。能够将所学知识和内容用于解决实际问题。w飞跃:飞跃:通过编译原理的学习,改进思维方式,为通过编译原理的学习,改进思维方式,为将来的工作打好基础,终身受益。将来的工作打好基础,终身受益。编译原理与实现第1章编译概述考试成绩评定方法考试成绩评定方法n平时(平时(30%)作业、课堂练习和

7、出勤作业、课堂练习和出勤(25%)上机编程上机编程(15%)n期考(期考(70%)考试方式:笔试(闭卷)考试方式:笔试(闭卷)考试题型:考试题型:填空题填空题判断题判断题选择题选择题综合应用题综合应用题编译原理与实现第1章编译概述No man is born wise or learned. No man is born wise or learned. 没有生而知之者没有生而知之者第第1 1章章 编译概述编译概述编译原理与实现第1章编译概述学习内容:学习内容:n1.1程序设计语言程序设计语言n1.2翻译程序翻译程序n1.3编译程序的组成编译程序的组成n1.4编译程序的结构编译程序的结构n1.

8、5编译程序的前后处理器编译程序的前后处理器n1.6TEST语言与编译器语言与编译器编译原理与实现第1章编译概述第第1 1章章 编译概述编译概述学习重点:学习重点:n1、编译程序、编译程序n2、编译程序与解释程序的根本区别、编译程序与解释程序的根本区别n3、典型的编译程序模型及其各组成、典型的编译程序模型及其各组成部分的功能部分的功能编译原理与实现第1章编译概述回顾:程序与程序设计语言w程序:为实现特定目标或解决特定问题而用计算机语言程序:为实现特定目标或解决特定问题而用计算机语言编写的编写的指令序列的集合指令序列的集合。w常见的程序设计语言:常见的程序设计语言:C+,Java,C,FORTRA

9、N,Pascal,Lisp,Basic,ML等等程序输入程序输入程序输出程序输出高级语言高级语言机器语言机器语言编译原理与实现第1章编译概述1.1 程序设计语言(p1)1、机器语言、机器语言(最低形式,属低级语言)最低形式,属低级语言)特点特点:程序中的每条指令都是用二进制代:程序中的每条指令都是用二进制代码直接表示的,由它构成机器的指令系统,机码直接表示的,由它构成机器的指令系统,机器能直接识别和直接执行,但机器语言程序难器能直接识别和直接执行,但机器语言程序难写、难读、难修改,编程的工作量大,对程序写、难读、难修改,编程的工作量大,对程序员的要求高。员的要求高。 机器语言程序示例:机器语言

10、程序示例:00111110000110101111111000100100110100110010111101110110编译原理与实现第1章编译概述2、汇编语言、汇编语言(属低级语言)(属低级语言)特点特点:它是机器语言的符号表示,例:它是机器语言的符号表示,例如用如用ADD表示加法,可读性等方面较机器表示加法,可读性等方面较机器语言有一定的改进,但还依赖于具体的机语言有一定的改进,但还依赖于具体的机器,机器不能直接识别和直接执行。器,机器不能直接识别和直接执行。汇编语言程序示例:汇编语言程序示例:LDA,26/把把26送到变量送到变量AADDA,36/加上加上36OUT(48),A/输出到

11、输出到48号端口号端口HALT/暂停暂停编译原理与实现第1章编译概述3、高级语言、高级语言特点特点:它独立于机器,比较接近自它独立于机器,比较接近自然语言,因而容易学习和掌握,且编写然语言,因而容易学习和掌握,且编写程序效率高,编写出的程序易读、易理程序效率高,编写出的程序易读、易理解、易修改、易移植,但机器不能直接解、易修改、易移植,但机器不能直接识别和直接执行。识别和直接执行。C语言程序示例:语言程序示例:inta,c=2;a=16+c*2;printf(a=%d,a);编译原理与实现第1章编译概述高高汇汇级级编编语语语语言言言言程程程程序序序序翻译程序翻译程序编译原理与实现第1章编译概述

12、1.2翻译程序翻译程序(p2)1、除机器语言程序外,用其它语言编写的、除机器语言程序外,用其它语言编写的程序都必须翻译才能被计算机识别和执行。程序都必须翻译才能被计算机识别和执行。2、翻译程序的定义翻译程序的定义: 翻译程序是这样的一种程序,它能将用翻译程序是这样的一种程序,它能将用甲语言(源语言)编写的程序(源程序)翻甲语言(源语言)编写的程序(源程序)翻译成与之等价的乙语言(目标语言)编写的译成与之等价的乙语言(目标语言)编写的程序(目标程序)。程序(目标程序)。编译原理与实现第1章编译概述3、翻译程序在计算机系统中的所在层、翻译程序在计算机系统中的所在层翻翻译译程程序序属属于于系系统统软

13、软件件!编译原理与实现第1章编译概述4、翻译方式、翻译方式(1)解释方式)解释方式(相当口译)(相当口译)特点:特点:源程序的翻译到执行只有一个阶段源程序的翻译到执行只有一个阶段解释执行阶段,即:解释程序将按源程序解释执行阶段,即:解释程序将按源程序中语句的动态顺序,逐句地进行分析解释,并中语句的动态顺序,逐句地进行分析解释,并立即予以执行。在这种翻译方式下,不生成目立即予以执行。在这种翻译方式下,不生成目标代码。标代码。编译原理与实现第1章编译概述(2)编译方式)编译方式(相当笔译)相当笔译)特点:特点:源程序的翻译和目标程序的运行是源程序的翻译和目标程序的运行是分阶段进行的,它先将分阶段进

14、行的,它先将高级语言高级语言编写的源程序编写的源程序翻译成翻译成汇编语言程序汇编语言程序或或机器语言程序机器语言程序,然后再,然后再运行目标程序。运行目标程序。编译原理与实现第1章编译概述编译程序编译程序vs.解释程序解释程序编译解释编译原理与实现第1章编译概述a.当目标程序是机器语言程序时,源程序从编当目标程序是机器语言程序时,源程序从编译到被执行的过程分为两个阶段:译到被执行的过程分为两个阶段: 编译原理与实现第1章编译概述b.当目标程序是汇编语言程序时,源程序从编译当目标程序是汇编语言程序时,源程序从编译到被执行的过程分为三个阶段:到被执行的过程分为三个阶段:编译原理与实现第1章编译概述

15、看起来,编译器似乎完全能代替汇编啊!看起来,编译器似乎完全能代替汇编啊!w回答是回答是No。wWhy?1.高级语言通过编译器转化成的机器语言,受限于高级语言通过编译器转化成的机器语言,受限于高级语言,其效率和功能上都有限制。比如不能高级语言,其效率和功能上都有限制。比如不能过分操作内存。但通过汇编器转化过来的机器语过分操作内存。但通过汇编器转化过来的机器语言,效率高,且用汇编语言,可直接和言,效率高,且用汇编语言,可直接和CPU对话!对话!2.汇编可以反汇编(逆向编译),即:汇编可以反汇编(逆向编译),即:程序(二进程序(二进制机器语言)通过反汇编器(制机器语言)通过反汇编器(compiler

16、),可转),可转化为汇编代码(文本)化为汇编代码(文本)但永远不能转化为高级语但永远不能转化为高级语言的源代码!言的源代码!编译原理与实现第1章编译概述预处理器预处理器源程序源程序标准源程序标准源程序 可重定位机器代码可重定位机器代码可重定位可重定位目标文件目标文件库文件库文件编译程序编译程序汇编程序汇编程序目标汇编程序目标汇编程序连接加载程序连接加载程序绝对机器代码绝对机器代码C语语言言编编译译系系统统(见(见p9)宏处理宏处理文件包含文件包含条件编译条件编译编译原理与实现第1章编译概述5、两种翻译方式的比较、两种翻译方式的比较编译方式与解释方式的根本区别在于是否编译方式与解释方式的根本区别

17、在于是否生成目标代码。生成目标代码。在解释方式下执行源程序,易于查错,在在解释方式下执行源程序,易于查错,在程序执行中可以修改程序程序执行中可以修改程序(代表有代表有BASIC语言语言)。但和编译方式相比,执行效率太低。但和编译方式相比,执行效率太低。现在有些语言的集成开发环境提供了两种现在有些语言的集成开发环境提供了两种方式,如方式,如VisualBasic,调试期间可解释执行源,调试期间可解释执行源程序,而调好的程序可以编译生成目标程序程序,而调好的程序可以编译生成目标程序。 编译原理与实现第1章编译概述编译过程编译过程w自然自然语语言的翻言的翻译译(如把英文翻(如把英文翻译为译为中文中文

18、 )识别出句子中的一个个单词;识别出句子中的一个个单词;分析句子的语法结构;分析句子的语法结构;根据句子的含义进行初步翻译;根据句子的含义进行初步翻译;对译文进行修饰;对译文进行修饰;写出最后的译文。写出最后的译文。词法分析词法分析语法分析语法分析中间代码中间代码产生产生优化优化目标代码目标代码产生产生n例例Themonkeyatethebanana.n例例Acompilerisacomputerprogramthattransformssourcecodewritteninaprogramminglanguageintoanothercomputerlanguage.编译原理与实现第1章编译

19、概述一个平滑的字符流一个平滑的字符流变成一个单词序列变成一个单词序列得到语法成分得到语法成分更接近机器语言更接近机器语言更高的效率更高的效率达到目标达到目标走向目标走向目标1走向目标走向目标2走向目标走向目标3走向目标走向目标4走向目标走向目标51.3编译程序的组成编译程序的组成(p3)编译原理与实现第1章编译概述编译原理与实现第1章编译概述1、词法分析程序、词法分析程序(又称(又称扫描器)扫描器)词法分析依次读入源程词法分析依次读入源程序中的每个字符,依据语言序中的每个字符,依据语言的构词规则,识别出一个个的构词规则,识别出一个个具有独立意义的最小语法单具有独立意义的最小语法单位,即位,即“

20、单词单词”,并用整数,并用整数码或有意义的记号来表示每码或有意义的记号来表示每个单词的词性是保留字、标个单词的词性是保留字、标识符、分界符、运算符或常识符、分界符、运算符或常数。数。例如,表达式例如,表达式a=10+c*20的的词法分析结果如右表所示。词法分析结果如右表所示。整数码整数码 记号记号单词单词100IDa21=200NUM 1022+100IDc25*200NUM 20编译原理与实现第1章编译概述2、语法分析程序、语法分析程序 依据语言的语法规则,依据语言的语法规则,逐一地分析词法分析时得逐一地分析词法分析时得到的单词,以确定它们是到的单词,以确定它们是怎样组成说明和语句的,怎样组

21、成说明和语句的,以及说明和语句是怎样组以及说明和语句是怎样组成程序的。成程序的。分析时如发现有不合分析时如发现有不合语法规则的地方,则报告语法规则的地方,则报告出错位置和性质;如无语出错位置和性质;如无语法错误,则以另一种内部法错误,则以另一种内部表示(如语法分析树或其表示(如语法分析树或其它中间表示)给出正确的它中间表示)给出正确的语法结构,供下一阶段分语法结构,供下一阶段分析使用。析使用。“猴子吃香蕉猴子吃香蕉”的的语法分析树语法分析树编译原理与实现第1章编译概述a=10+c*20的语法分析树的语法分析树编译原理与实现第1章编译概述3、语义分析程序、语义分析程序 依据语言的语义规则对语法分

22、析得到的语依据语言的语义规则对语法分析得到的语法结构进行静态语义检查(即确定类型、类型法结构进行静态语义检查(即确定类型、类型和运算合法性检查、识别含义与相应的语义处和运算合法性检查、识别含义与相应的语义处理及其它一些静态语义检查),并用另一种内理及其它一些静态语义检查),并用另一种内部形式表示出来,供下一阶段使用。部形式表示出来,供下一阶段使用。4、中间代码生成程序、中间代码生成程序(可有可无)(可有可无)根据语法成分的语义对其进行翻译,用另根据语法成分的语义对其进行翻译,用另一种接近于计算机的指令形式(中间代码)表一种接近于计算机的指令形式(中间代码)表示出来,供下一阶段使用。示出来,供下

23、一阶段使用。编译原理与实现第1章编译概述语义分析及中间代码生成示例语义分析及中间代码生成示例编译原理与实现第1章编译概述5、中间代码优化程序、中间代码优化程序(可有可无可有可无)编译原理与实现第1章编译概述6、目标代码生成程序、目标代码生成程序将中间代码或优化之后的中间代码转换将中间代码或优化之后的中间代码转换为等价的目标代码。为等价的目标代码。目标代码的形式可以是绝对指令代码、目标代码的形式可以是绝对指令代码、可重定位的机器指令代码或汇编指令代码。可重定位的机器指令代码或汇编指令代码。目标代码依赖于具体的计算机的硬件系统结目标代码依赖于具体的计算机的硬件系统结构和指令系统。构和指令系统。编译

24、原理与实现第1章编译概述7、符号表处理程序、符号表处理程序编译过程中要记录源程序中出现的标识符,编译过程中要记录源程序中出现的标识符,并收集每个标识符的各种属性信息。符号表是由并收集每个标识符的各种属性信息。符号表是由若干记录组成的数据结构,每个标识符在表中有若干记录组成的数据结构,每个标识符在表中有一条记录。一条记录。标识符的各种属性是在编译的不同阶段填入标识符的各种属性是在编译的不同阶段填入符号表的。词法分析阶段只能分析出标识符名,符号表的。词法分析阶段只能分析出标识符名,语法分析阶段只能判断标识符在语句中出现是否语法分析阶段只能判断标识符在语句中出现是否合法,语义分析阶段将标识符的各种属

25、性填入符合法,语义分析阶段将标识符的各种属性填入符号表并使用这些属性生成中间代码。号表并使用这些属性生成中间代码。标识符名标识符名 标识符类型标识符类型类型类型地址地址aaa1(表示变量)(表示变量)1(表示整型)(表示整型) 0001编译原理与实现第1章编译概述8、出错处理程序、出错处理程序编译的各个阶段都可能发现源程序中的编译的各个阶段都可能发现源程序中的错误。任意时刻发现错误,都应该报告错误错误。任意时刻发现错误,都应该报告错误信息,包括错误出现的位置、错误性质等,信息,包括错误出现的位置、错误性质等,为程序员调试程序提供方便,从而使编译能为程序员调试程序提供方便,从而使编译能继续进行。

26、继续进行。词法分析可以检测出源程序中的非法符词法分析可以检测出源程序中的非法符号。语法分析能够发现程序语句中的各种语号。语法分析能够发现程序语句中的各种语法错误,如括号不匹配等等。语义分析能判法错误,如括号不匹配等等。语义分析能判断运算对象的类型是否匹配、变量是否重复断运算对象的类型是否匹配、变量是否重复声明或没声明就使用等错误。声明或没声明就使用等错误。例例inta,b;a=2*)12+b);编译原理与实现第1章编译概述C编译器编译器不同的编译器,其结构也不一定相同!不同的编译器,其结构也不一定相同!FORTRAN编译器编译器编译原理与实现第1章编译概述1.4编译程序的结构编译程序的结构(p

27、7)1、遍(趟,趟程)、遍(趟,趟程)所谓一遍是指一个编译程序在编译时把源所谓一遍是指一个编译程序在编译时把源程序或其中间代码从头到尾扫描一遍并完成相程序或其中间代码从头到尾扫描一遍并完成相应工作的全过程。在一遍处理中,可完成编译应工作的全过程。在一遍处理中,可完成编译程序六个任务中的一个或几个。程序六个任务中的一个或几个。2、单遍与多遍编译程序、单遍与多遍编译程序根据编译程序在完成翻译任务的过程中需根据编译程序在完成翻译任务的过程中需要对源程序或其中间代码扫描的遍数,可以把要对源程序或其中间代码扫描的遍数,可以把编译程序分为编译程序分为单遍编译程序单遍编译程序(只需扫描一遍只需扫描一遍)和和

28、多遍编译程序多遍编译程序(需扫描多遍)。(需扫描多遍)。编译原理与实现第1章编译概述(1)单遍编译程序举例)单遍编译程序举例 编译程序对源程序只进行一遍扫描,就完成编编译程序对源程序只进行一遍扫描,就完成编译的各项任务,其典型结构是:以语法分析程序为译的各项任务,其典型结构是:以语法分析程序为主程序,词法分析程序作为语法分析的一个子程序,主程序,词法分析程序作为语法分析的一个子程序,当语法分析需要一个新单词时,便调用词法分析程当语法分析需要一个新单词时,便调用词法分析程序,当它识别出一个语法成分时,就调用语义分析序,当它识别出一个语法成分时,就调用语义分析程序。程序。编译原理与实现第1章编译概

29、述具体做法:具体做法:将整个编译程序划分为若干个将整个编译程序划分为若干个相继执行的模块,每一模块都对它前一模块的输相继执行的模块,每一模块都对它前一模块的输出扫描一遍,并完成相应工作,然后将工作结果出扫描一遍,并完成相应工作,然后将工作结果送给下一模块加工。送给下一模块加工。 (2)多遍编译程序举例)多遍编译程序举例 例如例如,三遍编译程序:把词法分析作为第三遍编译程序:把词法分析作为第一遍,语法分析和语义分析作为第二遍,代码一遍,语法分析和语义分析作为第二遍,代码生成作为第三遍。有:生成作为第三遍。有:编译原理与实现第1章编译概述3、遍的划分依据、遍的划分依据n源语言的繁简源语言的繁简n宿

30、主机的存储容量的大小宿主机的存储容量的大小n编译程序功能的强弱编译程序功能的强弱n目标程序优化的程度目标程序优化的程度n实现工具的先进程度实现工具的先进程度n设计人员的素质和数量设计人员的素质和数量 当源语言较繁、编译程序功能很强、目标当源语言较繁、编译程序功能很强、目标程序优化程度较高且宿主机存储容量较小时,程序优化程度较高且宿主机存储容量较小时,宜采用多遍扫描方式。宜采用多遍扫描方式。编译原理与实现第1章编译概述4、前端和后端、前端和后端(p8)编译原理与实现第1章编译概述把编译程序分为前端和后端的优点是把编译程序分为前端和后端的优点是便便于编译程序的构造和移植于编译程序的构造和移植。例如

31、,有例如,有K种高级语言、种高级语言、L种目标机器,种目标机器,如果不分前端和后端,就需要建立如果不分前端和后端,就需要建立K*L套编译套编译程序,而分成前端和后端,只需要建立程序,而分成前端和后端,只需要建立K(前(前端)端)+L(后端)套编译程序。(后端)套编译程序。CPBAB中中间间语语言言编译原理与实现第1章编译概述1.6TEST语言与编译器(语言与编译器(p10p10)一、一、TEST语言语言TEST语言程序是由一对花括号括起来的语句语言程序是由一对花括号括起来的语句序列,它在语法上相当于序列,它在语法上相当于C语言的函数体。语言的函数体。声明语句声明语句:只能是简单的整型变量:只能

32、是简单的整型变量控制语句控制语句:if、while和和for语句语句表达式语句表达式语句:布尔表达式和算术表达式:布尔表达式和算术表达式算术运算符算术运算符:+、*、/比较运算符比较运算符:、=、=和和!=输入语句输入语句:read语句语句输出语句输出语句:write语句语句注释语句注释语句:用:用“/*”和和“*/”括起来,但注释括起来,但注释不能嵌套。不能嵌套。 编译原理与实现第1章编译概述一个一个TEST语言程序语言程序inti;intn;intj;j=1;readn;/*输入语句输入语句*/for(i=1;i=n;i=i+1)j=j*i;writej;/*输出语句输出语句*/编译原理与

33、实现第1章编译概述二、二、TEST编译器编译器TEST编译器包括以下编译器包括以下3个个C文件:文件:1、TESTmain.c:主程序,先后调用词法分析、:主程序,先后调用词法分析、语法分析及语义分析和代码生成子程序。语法分析及语义分析和代码生成子程序。2、TESTscan.c:词法分析子程序,接收用:词法分析子程序,接收用TEST语言编写的程序,输出的单词符号程序将作为语语言编写的程序,输出的单词符号程序将作为语法分析的输入。法分析的输入。3、TESTparse.c:语法、语义分析及:语法、语义分析及TEST机的机的汇编代码生成子程序,如果有错误,报告错误。汇编代码生成子程序,如果有错误,报

34、告错误。词词法法分分析析语法分析语法分析语义分析语义分析代码生成代码生成TEST程序程序TEST单词单词TEST机汇机汇编代码编代码编译原理与实现第1章编译概述三、三、TEST机机 用一个抽象机的汇编语言作为用一个抽象机的汇编语言作为TEST编译编译器的目标语言。器的目标语言。TEST机的指令仅能作为机的指令仅能作为TEST语言的目标。语言的目标。TEST机的模拟程序直接从一个机的模拟程序直接从一个文件中读取汇编代码并执行它,因此避免了由文件中读取汇编代码并执行它,因此避免了由汇编语言翻译为机器代码的过程。但是,这个汇编语言翻译为机器代码的过程。但是,这个模拟程序并非是一个真正的汇编程序,它没

35、有模拟程序并非是一个真正的汇编程序,它没有符号地址或标号。符号地址或标号。TEST编译器编译器TEST程序程序TEST机机TEST机机汇编代码汇编代码运行运行结果结果编译原理与实现第1章编译概述小结小结1、编译程序、编译程序2、编译程序与解释程序的根本区别、编译程序与解释程序的根本区别3、典型的编译程序模型及其各组成、典型的编译程序模型及其各组成部分的功能部分的功能4、遍、遍5、前端和后端、前端和后端7、TEST编译器编译器编译原理与实现第1章编译概述习题习题(p11)1.高级程序设计语言有那些特点?高级程序设计语言有那些特点?2.典典型型的的编编译译程程序序可可划划分分为为几几部部分分?各各部部分分的的主主要功能是什么?每部分都是必不可少的吗?要功能是什么?每部分都是必不可少的吗?3.解释方式和编译方式的区别是什么?解释方式和编译方式的区别是什么?4.论述多遍扫描编译程序的优缺点。论述多遍扫描编译程序的优缺点。5.解释下列名词:解释下列名词:源程序源程序目标程序目标程序翻译程序翻译程序汇编程序汇编程序编译程序编译程序遍遍编译原理与实现第1章编译概述1、设计编译程序时应当考虑哪些问题?、设计编译程序时应当考虑哪些问题?2、为什么为什么Java实现了实现了“一次编写,到处运行一次编写,到处运行”?思考题思考题编译原理与实现第1章编译概述

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 资格认证/考试 > 自考

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号