一,语言处理器
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>名调用 弃用
分享到:
相关推荐
### 编译原理第一章引论知识点详解 #### 一、编译器概念及工作原理 **1.1 编译器定义** - **定义**: 编译器是一种软件工具,其主要职责是将源代码(一种高级编程语言)转换为目标代码(通常是机器语言或另一种...
1. 词法分析:这是编译的第一个阶段,其任务是读入源程序的字符序列,然后将它们组织成有意义的词素序列。在这个过程中,会扫描源代码,识别出如标识符、常数、运算符等基本符号,这被称为词法单元或标记。这一阶段...
编译原理电子课件
编译原理电子课件 第一章 引论.ppt 编译原理电子课件 第七章 自下而上的LR(k)分析方法.ppt 编译原理电子课件 第三章 有穷自动机.ppt 编译原理电子课件 第九章 运行时的存储组织与管理.ppt 编译原理电子课件 第二章 ...
《编译原理》是计算机科学领域的一门重要课程,由陈火旺编著的第三版在第一章中主要介绍了编译的基础概念。编译是将高级语言程序转化为机器可执行的低级语言的过程,这一过程涉及多个阶段,包括词法分析、语法分析、...
#### 第1章 引论 **知识点解析:** 1. **编译程序:** - 定义:如果源语言为高级语言,目标语言为某台计算机上的汇编语言或机器语言,则此翻译程序称为编译程序。 - 功能:编译程序的主要作用是从源程序出发,...
课程的第一章引论介绍了计算机语言的发展历程,翻译系统的工作原理,编译系统的功能分析,编译程序的总体结构,编译程序的生成过程,以及编译技术在实际中的应用。这为后续深入学习编译原理打下了基础。通过学习,...
《编译原理张晶版配套答案》是一份涵盖了编译原理课程1~7章内容的解读书籍。这本书主要针对哈尔滨工程大学的学生和对编译技术感兴趣的读者,由张晶教授编写,旨在帮助读者深入理解和掌握编译器设计的基础知识。 在...
#### 第1章 引论 **知识点解析:** 1. **编译程序:** 当源语言为高级语言时,目标语言通常是汇编语言或机器语言,用于此类翻译任务的程序被称为编译程序。 2. **源程序:** 源语言编写的原始程序,它是编译过程...
第一章是引论,介绍了编译程序的基本概念、编译过程的概述、编译程序的结构、编译程序与程序设计环境的关系以及编译程序的生成方法。这一章节为读者奠定了理解编译过程的基础框架,使得后续内容的学习建立在坚实的...
3. 作为软件工程的一个典型实例,学习编译原理有助于理解软件开发过程。 4. 对于经常设计简单语言的程序员,编译知识能够提升他们的语言设计水平。 5. 编译技术在软件安全和逆向工程等领域具有广泛应用。 然而,**...
第一章 引论 1.1 什么叫编译程序 1.2 编译过程概述 1.3 编译程序的结构 1.4 编译程序与程序设计环境 1.5 编译程序的生成 第二章 高级语言及其语法描述 2.1 程序语言的定义 2.2 高级语言的一般特性 ...
《编译原理第2版习题具体答案》的压缩包包含了一系列关于编译原理核心章节的详细解答,这些章节覆盖了编译器设计的关键技术。以下是各章节的主要知识点概述: 1. **第01章 引论**:本章介绍了编译器的基本概念,...
第1章 引论 1.1 什么是编译程序 1.2 编译过程和编译程序的结构 1.2.1 编译过程概述 1.2.2 编译程序的结构 1.2.3 编译阶段的组合 1.3 解释程序和一些软件工具 1.3.1 解释程序 1.3.2 处理源程序的软件工具 1.4 程序...
哈工大考研必考 作者:蒋宗礼,姜守旭编著 页数:439 出版社:北京市:高等教育出版社 出版...简介:本书是一本编译程序的教材。内容包括:引论、高级语言及其文法、词法分析、自顶向下的语法分析、自底向上的语法分析等。
在第一章“引论”中,讲解了编译程序的基本概念和作用。编译程序是一种翻译工具,它将源代码(源语言程序)转换为目标代码(目标语言程序)。源语言通常是高级语言,如C++、Java或Python,而目标语言则是机器可以...
由侯文永主编的经典编译原理教程:第一章引论;第二章文法和语言;第三章词法分析;第四章语法分析;第五章语法制导翻译和中间代码生成;第六章运行时存储空间管理;第七章代码优化;第八章代码生成;第九章并行编译...
第一章 引论 第二章 形式语言概论 第三章 有穷自动机 第四章 词法分析 第五章 自上而下语法分析 第六章 自下而上分析和优先分析方法 第七章 自下而上的LR(k)分析方法 第八章 语法制导翻译 代码优化 ……
编译原理第一章思维导图原件,可折叠展开
第一章引论是理解编译过程的基础。编译过程可以分为词法分析、语法分析、语义分析、中间代码生成、代码优化及目标代码生成等主要步骤。这些步骤共同协作,将源代码转换为可执行的机器代码。引论部分虽然不是重点考核...