`
java-mans
  • 浏览: 11338881 次
文章分类
社区版块
存档分类
最新评论

【编译原理】第一章 引论

 
阅读更多

一,语言处理器

1)一个集成的软件开发环境,其中包括很多种类的语言处理器,比如编译器、解释器、汇编器、连接器、加载器、调试器以及程序概要提取工具。

2)编译器:把源程序的每一条语句都编译成机器语言,并保存成二进制文件,这样运行时计算机可以直接以机器语言来运行此程序,速度很快; 包括编译器,反编译器,交叉编译器

3)解释器:能够执行用其他计算机语言编写的程序的系统软件,它是一种翻译程序。它的执行方式是一边翻译一边执行,因此其执行效率一般偏低,但是解释器的实现较为简单,而且编写源程序的高级语言可以使用更加灵活和富于表现力的语法

编译器产生的机器语言目标程序,比解释器快很多。解释器的错误诊断通常比编译器更好。

4)汇编器:是将汇编语言翻译为机器语言的程序。一般而言,汇编生成的是目标代码,需要经链接器(Linker)生成可执行代码才可以执行

5)连接器:链接函数和全局变量,所以,我们可以使用编译器生成的中间目标文件(O文件或是OBJ文 件)来链接我们的应用程序。链接器并不管函数所在的源文件,只管函数的中间目标文件(Object File),在大多数时候,由于源文件太多,编译生成的中间目标文件太多,而在链接时需要明显地指出中间目标文件名,这对于编译很不方便,所以,我们要给 中间目标文件打个包,在Windows下这种包叫“库文件”(Library File),也就是 .lib 文件,在UNIX下,是Archive File,也就是 .a 文件

6)加载器:把所有可执行目标文件放到内存中执行

7)调试器:工作原理是基于中央处理器的异常机制,并由操作系统的异常分发\事件分发的子系统(或模块)负责将其封装处理后,以比较友好的方式与调试器进行实时交互

二,一个编译器的结构

1)编译器能把源程序映射为在语义上等价的目标程序。此映射过程由两部分组成:分析部分和综合部分

2)分析部分(编译器前端):把源程序分解成多个组成要素,并在这些要素之上加上语法结构,然后它使用这个结构来创建该源程序的一个中间表示。如果检查出源程序语法或语义有误,则提供有用信息告知用户。分析部分还手机有关源程序的信息,并把信息放到一个称为符号表的数据结构中。

3)综合部分(编译器后端):根据中间部分和符号表中的信息来构造用户期待的目标程序。

4)词法分析:词法分析阶段是编译过程的第一个阶段,是编译的基础。这个阶段的任务是从左到右一个字符一个字符地读入源程序,即对构成源程序的字符流进行扫描然后根据构词规则识别单词(也称单词符号或符号)。词法分析程序实现这个任务。词法分析程序可以使用Lex等工具自动生成。

5)语法分析:语法分析是编译过程的一个逻辑阶段。语法分析的任务是在词法分析的基础上将单词序列组合成各类语法短语,如“程序”,“语句”,“表达式”等等.语法分析程序判断源程序在结构上是否正确。源程序的结构由上下文无关文法描述。

6)语义分析:语义分析是编译过程的一个逻辑阶段. 语义分析的任务是对结构上正确的源程序进行上下文有关性质的审查。例如重要的是进行类型审查,数组下标必须是整数,

例如一个C程序片断:
   int arr[2],b;
   b = arr * 10;
  源程序的结构是正确的.
   语义分析将审查类型并报告错误:不能在表达式中使用一个数组变量,赋值语句的右端和左端的类型不匹配。

7)中间代码生成:在进行了语法分析和语义分析阶段的工作之后,有的编译程序将源程序变成一种内部表示形式,这种内部表示形式叫做中间语言或中间表示或中间代码。所谓“中间代码”是一种结构简单、含义明确的记号系统,这种记号系统复杂性介于源程序语言和机器语言之间,容易将它翻译成目标代码。另外,还可以在中间代码一级进行与机器无关的优化。产生中间代码的过程叫中间代码生成。

8)代码优化:程序代码进行等价(指不改变程序的运行结果)变换。程序代码可以是中间代码(如四元式代码),也可以是目标代码。等价的含义是使得变换后的代码运行结果与变换前代码运行结果相同。优化的含义是最终生成的目标代码短(运行时间更短、占用空间更小),时空效率优化。原则上,优化可以再编译的各个阶段进行,但最主要的一类是对中间代码进行优化,这类优化不依赖于具体的计算机。

9)代码生成:代码生成器,以源程序的中间代码表示作为输入,并把它映射到目标语言。如果目标语言为机器语言,则必须为程序使用的每个变量指明寄存器或内存位置,然后中间指令翻译成能完成相同任务的机器指令序列。代码生成的至关重要的方面是合理分配寄存器

10)符号表管理:

在编译过程中,编译程序用来记录源程序中各种名字的特性信息, 所以也称为名字特性表。

名 字: 程序名、过程名、函数名、用户定义类型名、变量名、常量名、枚举值名、标号名等。
特性信息: 上述名字的种类、类型、维数、参数个数、数值及目标地址(存储单元地址)等。

填表:当分析到程序中的说明或定义语句时,应将说明或定义的名字,以及与之有关的信息填入符号表中。
例:Procedure P( )

查表:(1) 填表前查表,检查在程序的同一作用域内名字是否重复定义;
(2) 检查名字的种类是否与说明一致;
(3) 对于强类型语言,要检查表达式中各变量的类型是否一致;
(4) 生成目标指令时,要取得所需要的地址。

三,编译技术的应用

1)编译时间也是运行开销的一部分,一个常用的技术就是只编译和优化那些经常运行的程序片段。

2)针对计算机体系结构的优化:并行(指令并行,多个运算并行,在处理器层次:同一应用的不同线程并行)

内存层次结构(内存由几层不同速度和大小的存储器组成,离处理器最近的层速度最快但是容量小)

3)新计算机体系结构的设计

RISC(Reduced Instruction-Set Computer)精简指令系统

CISC(Complex Instruction-Set Computer)复杂指令系统:使汇编程序更容易

ARM(Advanced RISC Machines)是微处理器行业的一家知名企业,设计了大量高性能、廉价、耗能低的RISC处理器、相关技术及软件。技术具有性能高、成本低和能耗省的特点。适用于多种领域,比如嵌入控制、消费/教育类多媒体、DSP和移动式应用等

X86 Intel首先开发制造的一种微处理器体系结构的泛称

四,程序设计语言基础

1)环境:名字和内存位置(变量)的映射

状态:内存位置到它们的值得映射 C中成把左值映射为右值

2)标识符:一个字符串,指向一个实体(数据对象、过程、类、类型)。所有标识符都是名字,但并不是所有名字都是标识符比如 x.y 表示x结构中y字段

变量:指向存储中的某个特定的位置

3)声明:int a 定义:a=2;

4)动态作用域:一个作用域依赖于一个或多个只有在程序执行时刻才能知道的因素,他就是动态的

5)参数传递机制:1>值调用 传递指针或数组会改变原来 值

2>引用调用 实在参数的地址 作为形参。被调用的代码中沿着指针找到调用者指明的内存位置,改变形参就像改变实在参数

3>名调用 弃用


分享到:
评论

相关推荐

    编译原理-第一章-引论.pdf

    编译原理 第一章 引论 学习笔记

    编译原理电子课件1-12章打包.zip

    编译原理电子课件 第一章 引论.ppt 编译原理电子课件 第七章 自下而上的LR(k)分析方法.ppt 编译原理电子课件 第三章 有穷自动机.ppt 编译原理电子课件 第九章 运行时的存储组织与管理.ppt 编译原理电子课件 第二章 ...

    编译原理 ppt 陈火旺(第三版) 第一章引论

    编译原理 陈火旺(第三版) 第一章引论 ppt

    编译原理电子课件 第一章 引论.ppt

    编译原理电子课件

    第一章 引论1

    第一章 引论编译原理:将高级程序设计语言变换成计算机硬件所能识别的机器语言,以便计算机进行处理。程序设计语言:1.高级语言2.汇编语言(汇编语言就是机器语言的抽

    合工大编译原理17级课件全.zip

    第一章 引论  1.1 什么叫编译程序  1.2 编译过程概述  1.3 编译程序的结构  1.4 编译程序与程序设计环境  1.5 编译程序的生成 第二章 高级语言及其语法描述  2.1 程序语言的定义  2.2 高级语言的一般特性  ...

    编译原理讲义(内容课程详细讲解,例题)

    第一章:引论 1 第二章 高级语言及其语法描述 2 第三章 词法分析 5 第四章 语法分析----自上而下分析 4 第五章 语法分析----自下而上分析 6 第六章 属性文法和语法制导翻译 6 第七章 语义...

    《编译原理》课后习题答案

    《编译原理》课后习题答案第一章 第 1 章引论 第 1 题 解释下列术语: (1)编译程序 (2)源程序 (3)目标程序 (4)编译程序的前端 (5)后端 (6)遍 答案: (1) 编译程序:如果源语言为高级语言,目标...

    程序设计语言编译原理 (陈火旺)

    第一章引论 1.1什么叫编译程序 1.2编译过程概述 1.3编译程序的结构 1.3.1编译程序总框 1.3.2表格与表格管理 1.3.3出错处理 1.3.4遍 1.3.5编译前端与后端 1.4编译程序与程序设计环境 1.5编译程序的生成 ...

    编译原理(侯文永 张冬茉)

    由侯文永主编的经典编译原理教程:第一章引论;第二章文法和语言;第三章词法分析;第四章语法分析;第五章语法制导翻译和中间代码生成;第六章运行时存储空间管理;第七章代码优化;第八章代码生成;第九章并行编译...

    编译原理 课件 很全

    第一章 引论 第二章 形式语言概论 第三章 有穷自动机 第四章 词法分析 第五章 自上而下语法分析 第六章 自下而上分析和优先分析方法 第七章 自下而上的LR(k)分析方法 第八章 语法制导翻译 代码优化 ……

    编译原理期末复习资料

    这是一个编译原理复习用的ppt,第一章 引论 第二章* 高级语言及其语法描述 第三章** 词法分析 第四章** 语法分析—自上向下分析 第五章** 语法分析—自下向上分析 第六章 * 属性文法与语法制导翻译 第七章* 语义分析...

    操作系统原理-第一章-操作系统引论.docx

    第一章 操作系统引论 一、 选择最合适的答案 1. 一般用户更喜欢使用的系统是( )。 A.手工操作 B.单道批处理 C.多道批处理 D.多用户分时系统 2. 与计算机硬件关系最密切的软件是( )。 A.编译程序 B.数据库管理...

    第一章——引论.xmind

    编译原理第一章思维导图原件,可折叠展开

    编译原理(第二版中文)

    第1章 引论  1.1 翻译程序  1.2 为什么需要编译程序  1.3 编译程序的工作过程  1.4 编译程序的结构  1.5 编译程序的组织方式  1.6 编译程序的其他有关技术  1.7 翻译程序编写系统  1.8 并行编译...

    编译原理和技术 陈意云 中科大 ppt

    编译原理和技术 陈意云 中科大 ppt第一章引论~~~~~~~~~~~~~~~~~~~~~~~~~~~

    编译原理(第2版)课件

    第1章 引论 1.1 什么是编译程序 1.2 编译过程和编译程序的结构 1.2.1 编译过程概述 1.2.2 编译程序的结构 1.2.3 编译阶段的组合 1.3 解释程序和一些软件工具 1.3.1 解释程序 1.3.2 处理源程序的软件工具 1.4 程序...

    编译原理期中知识点总结

    第一章 编译引论 1、编译程序:将某一种程序设计语言写的程序翻译成等价的另一种语言的程序的程序 2、源语言:用来编写源程序的语言(汇编,高级程序设计语言) 3、源程序:用源语言写的程序 4、目标语言:目标程序...

    编译原理(第二版)课件

    第一章 引论 第二章 PL/0编译系统 第三章 文法和语言 第四章词法分析程序的自动构造 第五章 LR分析程序及其自动构造 第六章 LL(1)分析 第七章 语法制导翻译和中间代码 第八章 运行时的存储组织和管理 第九章 代码...

Global site tag (gtag.js) - Google Analytics