版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、编译技术,王赢,本课程的定位:计算机专业的专业基础课是软件技术的基础,是计算机专业学生的必修主干课,其功能:编译原理是介绍如何将高级编程语言转换成计算机硬件能够识别的机器语言,使计算机能够处理它。其理论基础扎实,其形式化系统不仅应用于编译技术,还广泛应用于人工智能、多媒体技术和数据库。本文详细介绍了如何将高级语言编写的源程序翻译成机器指令程序。学习任务,掌握编译的理论基础和形式化体系,了解编译的全过程及其具体实现方法,学习方法,认真听讲,认真理解书中的基本概念、基本原理和基本算法,理解书中的例子和练习。阅读或理解例子时,必须画出相应的详细变化过程,并通过画图片加深理解。在理解的基础上,记住理论
2、和实践的结合,学会要求。成绩评定法通常得分为40%,期末考试得分为60%。通常的分数是:班级点名:20%家庭作业:20%。第一章绪论,课前思考,编译器的编译过程和结构是什么,为什么要学习编译器,学习目标,明确编译器的功能及其在计算机系统中的作用。了解将源语言程序编译成目标程序的整个过程,以及这个过程通常分为哪些阶段。知道什么样的软件编译技术可以用于设计和开发。编译器是现代计算机系统的基本组成部分之一。编译器通常由词法分析程序、语法分析程序、语义分析程序、中间代码生成程序、目标代码生成程序、代码优化程序、表管理程序和错误处理程序组成。通过本课程的学习,我们应该掌握每个组件的功能和设计原则,以及编
3、译阶段的逻辑关系。了解他们如何完成整个编译任务。知识结构、编程语言和编译、编程语言高级语言汇编语言机器语言如何在计算机上执行高级语言程序?将高级语言程序翻译成运行机器语言程序得到的机器语言程序,得到计算结果。翻译程序:用一种语言(称为源语言)编写的程序在不改变语义的情况下被翻译成另一种语言(称为目标语言)的等效程序。编译特指从高级语言到低级语言的转换。解释并接受从高级语言输入的语句,然后控制计算机执行它,立即得到这个句子的执行结果,然后接受下一个句子。编译器和解释器的区别是:日期,日期,(解释时执行),b :=2;a :=B2;写一个;编译器、解释器、movf # 2、bmovf b、r1ad
4、df # 2、r1movfr1、a、直接输出(显示)值4、编译的转换过程有两个阶段的转换:编译运行、三阶段转换:编译汇编运行、解释执行、以源程序为输入、不生成目标代码、解释时执行。缺点:效率低。因为源程序的循环语句部分应该被反复解释和执行。共同点:它们都需要词汇、语法和语义分析。编译器是现代计算机系统的基本组成部分之一,大多数计算机系统包含不止一种高级语言的编译器。一些高级语言甚至配置了几个不同性能的编译器。作为语言翻译者,编译器还应该在翻译过程中检查源程序的语法和语义,报告一些错误和警告信息,并帮助程序员纠正源程序。编译器的实现语言给出了这些术语的英文:编译器-编译器源语言-源语言源程序-源
5、程序目标语言-目标或目标语言目标程序-目标或目标程序实现语言-输入语言,计算机系统中的编译器层,来自于计算机百科全书的定义。软件:计算机系统中的程序及其文件系统软件:它位于计算机系统中最靠近硬件的一层,其他软件一般通过系统软件发挥作用。它与特定的应用领域无关,如编译系统和操作系统。语言处理系统:将用软件语言编写的各种程序处理成可在计算机上执行的程序。用于编写软件的语言。它主要包括需求定义语言、功能语言、设计语言、编程语言和文档语言。在处理高级语言程序时,首先要看自然语言的翻译。1.识别句子中的每个单词。2.分析句子的语法结构。3.根据句子的意思进行初步翻译。4.修改翻译文本。5.编写最终翻译,
6、编译过程概述,编译过程概述,词汇分析扫描仪,单词符号的任务识别,这是主要的语法分析。例如:position:=初始速率* 10;标识符:位置运算符:=标识符:初始运算符:标识符:速率运算符:*整数:10分隔符:要遵循的规则:语言的构词规则,例如:int a;a=a2;单词类型单词值保留单词int标识符分隔符;标识符a运算符(赋值)=标识符a运算符(加)整数2分隔符;识别右边程序中的单词,基本单词:标识符:常量:运算符:分隔符:void jisuan() int y,c,d;浮动x,a,b;x=a b * 50y=c)d *(x b;void int float,a b c d x y jisu
7、an,50,*=,(),语法分析根据词汇规则识别正确的单词,并将它们转换成统一的规范。待机转换转换基本单词、运算符和边界字符的转换标识符的转换常数。转换后的格式:(类号,内部代码)描述词法规则的有效工具是普通和有限自动机,语法分析分析器,任务是基于词法分析,根据语言语法规则。单词符号被分成不同的语法单位:短语、从句、句子、程序和程序语法规则:语言规则:也称为语法:指定单词如何形成短语、句子、程序和程序语法规则:BNF: a:3360=b | c示例:3360=:3360=,赋值语句的语法规则a 3360:=v=e 33603360=t | e t:3360=f语法分析的方法导出语句id1=id
8、2 id3*10,id1=id2 id3*10的最左边的派生、最右边的派生、最右边的简化和语法树,例如:(1)任何标识符都是表达式。(2)任何常数(整常数,实常数)都是表达式。(3)如果表达式1和表达式2都是表达式,那么表达式1和表达式1 *表达式2都是表达式。要遵循的规则:语法规则、语义分析语义分析器、任务完成静态语义审查和处理上下文相关审查类型匹配审查类型转换,例如,int arr2,c;c=arr1 * 10要遵循的规则:语义规则,例如,程序p();Var rate:real。程序初始;位置:=初始速率* 10 /*错误*/*错误*/*警告*/;程序p();变化率:真实。Var初始值:r
9、eal。Var位置:real。位置:=初始速率* 10,中间代码生成器,任务:从树或其他形式的源程序生成源代码和目标代码之间的代码。中间代码:四进制、三进制和逆波兰,例如:a=b c、四进制、OP、ARG1、ARG2、Result、B、C、T1、=、T1、A,例如:源程序id1=id2 id3 * 10可以生成四进制序列,四进制(运算符、运算)结果)通常以赋值语句的形式编写。结果=操作数1运算符操作数2,如c语言中的源程序a=b * c b * d,具有四进制序列(1)t1=b * c(2)T2=b * d(3)T3=t1 T2(4)a=T3。代码经过优化,任务处理并转换之前生成的中间代码。为
10、了在最后阶段产生更有效的目标代码原则:等价转换,Id1=id2 id 3 * 10(1)(inttoral 10-t1)(2)(* id3t T2)(3)(id2t T3)(4)(T3-Id1)转换(1)(id310.0 t1)(2)(id2 t1id 1)k=100;k)m=I 10 * k;n=j 10 * k;k=1;10如果k=100,则m=I 10 * k;n=j 10 * k;k .转到10;k=1;10如果k=100,则m=I 10 * k;n=j 10 * k;k .转到10;k=1;m=I;n=j;10如果k=100,则m=M10;n=n 10k .转到10;目标代码生成目标
11、代码生成器,任务将优化的中间代码转换为特定机器上的低级语言代码。目标代码形式的绝对指令代码:可立即执行的目标代码的汇编指令代码:汇编语言程序,由汇编程序汇编后只能运行可重定位的指令代码:首先连接各目标模块,确定变量和常量在主存中的位置,然后成为可加载到主存后运行的绝对指令代码,(*,id310.0t1)(,id 2ti id 1),movfid3,R2 mulf # 10.0,R2 movfid2,R1 addfr2,R1 movfr1,id1, 编译过程概述,表管理,表管理是一个贯穿整个编译过程的工作表:它用来记录源程序的各种信息和编译过程中的各种情况。 与前四个编译阶段相关的表包括符号表、
12、常数表、标签表、子程序入口表、中间代码表等。符号表是注册常量名、变量名、数组名、过程名等最重要的表。并记录它们的属性、定义和引用。函数:注册进程的层号,子程序符号表的条目,中间代码表,错误处理的错误处理程序,任务如果在源程序中有任何错误,编译器应该尝试找到错误并报告给用户。错误类型由一个特殊的错误处理程序完成:语法错误:在词法分析和语法分析过程中检测到的语义错误:通常在语义分析阶段的编译过程中检测到,这称为编译时错误,运行时显示的错误称为运行时错误。编译程序组件、编译阶段的组合、前端、后端分析、合成、前端和后端。前端包括编译逻辑结构中的分析部分,即词法分析、语法分析、语义分析和中间代码生成,此
13、外还有符号表构造中的错误处理以及相应的分析和机器无关的优化。后端包括与目标机器相关的部分,即合成部分,其包括在目标代码生成期间符号表的相应检索操作和错误处理操作,以及与机器相关的代码优化部分。将编译系统分为前端和后端,有利于移植编译系统,利用后端为同一目标机器配置不同语言的编译系统。分析步骤是指源程序的分析、线性分析(词法分析或扫描)、层次分析(语法分析)和语义分析,综合步骤是指后端工作,即合成并传递目标程序,从头到尾扫描源程序(或其中间形式),并进行相关处理,生成新的中间形式或最终目标程序,称为一次。注意:通行证与舞台的意义无关。多遍扫描的优点:节省内存空间,提高目标代码质量,编译逻辑结构清晰。缺点:编译时间长。注意:在内存许可的情况下,通过的次数尽可能少。扫描一次(侧重于解析)。传递原则针对高质量或低质量(高是多遍)、机器内存大小(小是多遍)、简单源语言(复杂是多遍)、设计器数量(更多是多遍)、编译器生成、编译器直接用机器语言编写、编译器用汇编语言编写注意:编译器的核心部分通常用汇编语言编写,编译器用高级语言编写注意:这是一种常用的方法。自编译编译工具:移植LEX(词法分析)和YACC(用于LALR分析表的自动生成)(在不同类型的机器之间移植相同语言的编译器),编译器构造,以及在特
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 燃气计量器具使用监管规范
- 消化性溃疡的预防
- T∕CSF 0117-2025 无人机激光雷达森林地上碳储量估测技术规范
- 上饶心理咨询师专项训练卷
- 宿州市埇桥区高中教师招聘考试真题2025
- 《数控机床加工零件》课件-车床钻孔加工要领1
- 2025年内蒙古大学创业学院招聘教师考试真题
- 2025年都江堰市实验中学教师招聘真题
- 2026年脊髓小脑通路病变诊疗试题及答案(神经内科版)
- 2026年博尔塔拉蒙古市工会系统事业单位人员招聘考试备考试题及答案详解
- 实施指南《G B-T36713-2018能源管理体系能源基准和能源绩效参数》实施指南
- 设备搬迁及安装方案
- 消防安全重点单位档案管理
- 2025年贵州省委党校在职研究生招生考试(政治经济学原理)历年参考题库含答案详解(5卷)
- 心理健康接纳自己课件
- 癫痫共患偏头痛诊断治疗
- 江西省农发种业有限公司招聘考试真题2024
- 储备土地巡查管理办法
- JJG 688-2025汽车排放气体测试仪检定规程
- 【15万吨日供水量水厂设计中反应沉淀池设计计算过程案例2300字】
- 《铁路线路养护与维修》课件 2.1.5垫板修正作业
评论
0/150
提交评论