编译程序和解释程序的区别.doc

编译程序和解释程序的区别

编译和解释的区别是什么?

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

而解释器则是只在执行程序时,才一条一条的解释成机器语言给计算机来执行,所以运行速度是不如编译后的程序运行的快的.

这是因为计算机不能直接认识并执行我们写的语句,它只能认识机器语言(是二进制的形式)

一、低级语言与高级语言

最初的计算机程序都是用0和1的序列表示的,程序员直接使用的是机器指令,无需翻译,从纸带打孔输入即可执行得到结果。后来为了方便记忆,就将用0、1序列表示的机器指令都用符号助记,这些与机器指令一一对应的助记符就成了汇编指令,从而诞生了汇编语言。无论是机器指令还是汇编指令都是面向机器的,统称为低级语言。因为是针对特定机器的机器指令的助记符,所以汇编语言是无法独立于机器(特定的CPU体系结构)的。但汇编语言也是要经过翻译成机器指令才能执行的,所以也有将运行在一种机器上的汇编语言翻译成运行在另一种机器上的机器指

令的方法,那就是交叉汇编技术。

高级语言是从人类的逻辑思维角度出发的计算机语言,抽象程度大大提高,需要经过编译成特定机器上的目标代码才能执行,一条高级语言的语句往往需要若干条机器指令来完成。高级语言独立于机器的特性是靠编译器为不同机器生成不同的目标代码(或机器指令)来实现的。那具体的说,要将高级语言编译到什么程度呢,这又跟编译的技术有关了,既可以编译成直接可执行的目标代码,也可以编译成一种中间表示,然后拿到不同的机器和系统上去执行,这种情况通常又需要支撑环境,比如解释器或虚拟机的支持,Java程序编译成bytecode,再由不同平台上的虚拟机执行就是很好的例子。所以,说高级语言不依赖于机器,是指在不同的机器或平台上高级语言的程序本身不变,而通过编译器编译得到的目标代码去适应不同的机器。从这个意义上来说,通过交叉汇编,一些汇编程序也可以获得不同机器之间的可移植性,但这种途径获得的移植性远远不如高级语言来的方便和实用性大。

二、编译与解释

编译是将源程序翻译成可执行的目标代码,翻译与执行是分开的;而解释是对源程序的翻译与执行一次性完成,不生成可存储的目标代码。这只是表象,二者背后的最大区别是:对解释执行而言,程序运行时的控制权在解释器而不在用户程序;对编译执

行而言,运行时的控制权在用户程序。

解释具有良好的动态特性和可移植性,比如在解释执行时可以动态改变变量的类型、对程序进行修改以及在程序中插入良好的调试诊断信息等,而将解释器移植到不同的系统上,则程序不用改动就可以在移植了解释器的系统上运行。同时解释器也有很大的缺点,比如执行效率低,占用空间大,因为不仅要给用户程序分配空间,解释器本身也占用了宝贵的系统资源。

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

而解释器则是只在执行程序时,才一条一条的解释成机器语言给计算机来执行,所以运行速度是不如编译后的程序运行的快的.

1、编辑:用编辑软件(EDIT.EXE或记事本)形成源程序(.ASM),如:LX.ASM;

2、汇编:用汇编程序(MASM.EXE)对源程序进行汇编,形成目标文件(.OBJ),格式如下:MASM LX.ASM;

3、连接:用连接程序(LINK.EXE)对目标程序进行连接,形成可执行文件(.EXE),格式如下:LINK LX.OBJ;

4、执行:如果结果在屏幕在显示,则直接执行可执行文件。

5、调试:用调试程序(DEBUG.EXE)对可执行文件进行调试,格式如下:DEBUG LX.EXE

1. 在具体计算机上实现一种语言,首先要确定的是表示该语言语义解释的虚拟计算机,一个关键的问题是程序执行时的基本表示是实际计算机上的机器语言还是虚拟机的机器语言。这个问题决定了语言的实现。根据这个问题的回答,可以将程序设计语言划分为两大类:编译型语言和解释型语言。

2. 由编译型语言编写的源程序需要经过编译、汇编和链接才能输出目标代码,然后机器执行目标代码,得出运行结果,目标代码由机器指令组成,一般不能独立运行,因为源程序中可能使用了某些汇编程序不能解释引用的库函数,而库函数代码又不在源程序中,此时还需要链接程序完成外部引用和目标模块调用的链接任务,最后输出可执行代码。C、C++、Fortran、Pascal、Ada都是编译实现的。

3. 解释型语言的实现中,翻译器并不产生目标机器代码,而是产生易于执行的中间代码,这种中间代码与机器代码是不同的,中间代码的解释是由软件支持的,不能直接使用硬件,软件解释器通常会导致执行效率较低。用解释型语言编写的程序是由另一个可以理解中间代码的解释程序执行的。与编译程序不同的是,解释程序的任务是逐一将源程序的语句解释成可执行的机器指令,不需要将源程序翻译成目标代码后再执行。对于解释型Basic

语言,需要一个专门的解释器解释执行 Basic程序,每条语言只有在执行才被翻译。这种解释型语言每执行一次就翻译一次,因而效率低下。

4. Java很特殊,Java程序也需要编译,但是没有直接编译称为机器语言,而是编译称为字节码,然后在Java虚拟机上用解释方式执行字节码。Python 的也采用了类似Java的编译模式,先将Python程序编译成Python字节码,然后由一个专门的Python字节码解释器负责解释执行字节码。

(Java虚拟机对字节码的执行相当于模拟一个cpu,而ruby1.8--在虚拟机还未出现前--是通过解释成语法树执行。)

1.什么是编译程序

2.什么是计算机程序

3.2015计算机一级MSOffice精选选择题及答案

4.2015计算机等级考试一级MSOffice考点复习(10)

5.电脑基础知识竞赛试题

合集下载

请简述编译器和解释器的基本工作流程

请简述编译器和解释器的基本工作流程

请简述编译器和解释器的基本工作流程

编译器和解释器是两种常见的程序语言处理工具,它们的基本工作流程有所不同。

编译器的基本工作流程:

1. 词法分析:将源代码分解成单词或符号,例如变量名、关键字、运算符等。

2. 语法分析:将单词或符号组成的序列转换成语法树,检查语法是否正确。

3. 语义分析:检查语法树是否符合语义规则,例如变量是否定义、类型是否匹配等。

4. 代码生成:将语法树转换成目标代码,例如汇编语言或机器码。

5. 优化:对目标代码进行优化,例如删除冗余代码、减少指令数等。

6. 目标代码生成:将优化后的代码生成可执行文件或库。

解释器的基本工作流程:

1. 词法分析:将源代码分解成单词或符号,例如变量名、关键字、运算符等。

2. 语法分析:将单词或符号组成的序列转换成语法树,检查语法是否正确。

3. 语义分析:检查语法树是否符合语义规则,例如变量是否定义、类型是否匹配等。

4. 解释执行:逐行解释执行源代码,将代码转换成机器指令并执行。

编译器和解释器的区别在于代码生成的方式不同。编译器将源代码转换成目标代码后再执行,而解释器则直接解释执行源代码。因此,编译器生成的可执行文件或库可以在不同的机器上运行,而解释器需要在每台机器上重新解释执行源代码。

总的来说,编译器和解释器都是将源代码转换成机器指令的工具,但它们的基本工作流程有所不同。编译器需要将源代码转换成目标代码后再执行,而解释器则直接解释执行源代码。在实际应用中,可以根据需要选择编译器或解释器来处理程序语言。

解释型语言

解释型语言

1 解释型语言

相对于编译型语言存在的,源代码不是直接翻译成机器语言,而是先翻译成中间代码,再由解释器对中间代码进行解释运行。比如Python/JavaScript / Perl /Shell等都是解释型语言。

解释型语言:程序不需要编译,程序在运行时才翻译成机器语言,每执 行一次都要翻译一次。因此效率比较低。比如Basic语言,专门有一个解释器能够直接执行Basic程 序,每个语句都是执行的时候才翻译。(在运行程序的时候才翻译,专门有一个解释器去进行翻译,每个语句都是执行的时候才翻译。效率比较低,依赖解释器,跨平台性好.)

两种方式

计算机不能直接理解高级语言,只能直接理解机器语言,所以必须要把高级语言翻译成机器语言,计算机才能执行高级语言编写的程序。

一个是编译,一个是解释。两种方式只是翻译的时间不同。编译型语言写的程序执行之前,需要一个专门的编译过程,把程序编译成为机器语言的文件,比如exe文件,以后要运行的话就不用重新翻译了,直接使用编译的结果就行了(exe文件),因为翻译只做了一次,运行时不需要翻译,所以编译型语言的程序执行效率高,但也不能一概而论,部分解释型语言的解释器通过在运行时动态优化代码,甚至能够使解释型语言的性能超过编译型语言。

解释则不同,解释性语言的程序不需要编译,省了道工序,解释性语言在运行程序的时候才翻译,比如解释性basic语言,专门有一个解释器能够直 2 接执行basic程序,每个语句都是执行的时候才翻译。这样解释性语言每执行一次就要翻译一次,效率比较低。解释是一句一句的翻译。

编译型与解释型,两者各有利弊

前者由于程序执行速度快,同等条件下对系统要求较低,因此像开发操作系统、大型应用程序、数据库系统等时都采用它,像C/C++、Pascal/Object

Pascal(Delphi)等都是编译语言,而一些网页脚本、服务器脚本及辅助开发接口这样的对速度要求不高、对不同系统平台间的兼容性有一定要求的程序则通常使用解释性语言,如JavaScript、VBScript、Perl、Python、Ruby、MATLAB 等等。

编译原理考试知识点复习

编译原理考试知识点复习

第一章:

编译过程的六个阶段:词法分析,语法分析,语义分析,中间代码生成,

代码优化,目标代码生成

解释程序:把某种语言的源程序转换成等价的另一种语言程序——目标语言程序,然后再执行目标程序。解释方式是接受某高级语言的一个语句输入,进行解释并控制计算机执行,马上得到这句的执行结果,然后再接受下一句。

编译程序:就是指这样一种程序,通过它能够将用高级语言编写的源程序转换成与之在逻辑上等价的低级语言形式的目标程序(机器语言程序或汇编语言程序)。

解释程序和编译程序的根本区别:是否生成目标代码

第三章:

Chomsky对文法中的规则施加不同限制,将文法和语言分为四大类:

0型文法(PSG)  0型语言或短语结构语言

文法 G的每个产生式α→β中:若α∈V*VNV*, β∈(VN∪VT)* ,

则 G是0型文法,即短语结构文法。

1型文法(CSG)  1型语言或上下文有关语言

在0型文法的基础上:若产生式集合中所有|α|≤|β|,除S→ε(空串)外,

则G是1型文法,即:上下文有关文法

另一种定义:

文法G的每一个产生式具有下列形式:αAδ→αβδ,其中α、δ∈V*,A∈VN,β∈V+;

2型文法(CFG)  2型语言或上下文无关语言

文法G的每个产生式A→α,若A∈VN ,α∈(VN∪VT)*,则G是2型法,即:上下文无关文法。

3型文法(RG)  3型语言或正则(正规)语言

若A、B∈VN,a∈VT或 ,

右线性文法:若产生式为A→aB或A→a

左线性文法:若产生式为 A→Ba或A→a

都是3型文法(即:正规文法)

最左(最右)推导

在推导的任何一步α β,其中α、β是句型,都是对α中的最左(右)非终结符

进行替换

规范推导:即最右推导。

规范句型:由规范推导所得的句型。

句子的二义性(这里的二义性是指语法结构上的。)

文法G[S]的一个句子如果能找到两种不同的最左推导(或最右推导),或者存在两棵不同的语法树,则称这个句子是二义性的。

编译原理复习(有答案)

编译原理复习(有答案)

第一章引论

1. 编译过程的阶段

由词法分析、语法分析、语义分析、中间代码生成、代码优化和目标代码生成六个阶段

2. 编译程序的概念

3. 编译程序的结构

例:(B)不是编译程序的组成部分。

A. 词法分析器;B. 设备管理程序

C. 语法分析程序;D. 代码生成程序

4. 遍的概念

对源程序(或其中间形式)从头至尾扫描一次并进行有关加工处理,生成新的中间形式或最终目标程序,称为一遍。

5. 编译程序与解释程序的区别

例:解释程序和编译程序是两类程序语言处理程序,它们的主要区别在于(D)。

A. 单用户与多用户的差别B. 对用户程序的差错能力

C. 机器执行效率D. 是否生成目标代码

第三章文法和语言

文法的概念

字母表、符号串和集合的概念及运算

例:(ab|b)*c 与下面的那些串匹配?(ACD)

A. ababbc;B. abab;C. c;D. babc;E. aaabc

例:ab*c*(a|b)c 与后面的那些串匹配?(BC)

A.acbbc B.abbcac C.abc D.acc

例:(a|b)a+(ba)*与后面的那些串匹配? (ADE)

A.ba B.bba C.ababa D.aa E.baa

文法的定义(四元组表示)

文法G定义为四元组(VN,VT,P,S)

VN:非终结符集

VT:终结符集

P:产生式(规则)集合

S:开始符号(或识别符号)

例:给定文法,A::= bA | cc,下面哪些符号串可由其推导出(①② ⑤)。

①cc ②b*cc ③b*cbcc ④bccbcc

⑤bbbcc

什么是推导

例:已知文法G:

E->E+T|E-T|T

T->T*F|T/F|F

F->(E)|i

试给出下述表达式的推导:i*i+i 推导过程:E->E+T

->T+T

->T*F+T

->F*F+T

->i*F+T

编译解释汇编的区别

编译解释汇编的区别

编译解释汇编的区别

编译、解释和汇编是计算机程序的常见处理方式,它们在程序的执行过程中扮演不同的角色。本文将探讨编译、解释和汇编之间的区别,以帮助读者更好地理解这些概念。

编译、解释和汇编是将高级编程语言转换为底层机器语言的方法。它们在编程语言的执行过程中发挥不同的作用,下面将对它们进行详细阐述。

编译(Compilation)

编译是一种将高级编程语言代码转换为机器语言的处理方式。编译器首先对整个源代码进行分析和检查,然后将其转换成等效的机器语言代码。编译过程会生成一个可执行文件,该文件可以直接在特定的硬件平台上运行。

编译器会检测语法错误和类型错误,并生成目标代码。编译的过程只需进行一次,生成的可执行文件可以在其他时间多次运行。编译的好处是执行速度快,一旦编译完成,程序就可以在不同的硬件上执行,而不需要再次进行编译。

解释(Interpretation)

解释是另一种将高级编程语言转换为机器语言的处理方式。解释器会逐行读取源代码,并将其转换为机器码以直接执行。解释过程是逐行进行的,每次执行一行代码。 解释器将源代码翻译为机器码的同时,还会进行错误检查。一旦发现错误,解释器会立即停止执行,并报告错误信息。解释器的一个明显优点是它可以在不同的平台上直接运行,不需要编译过程。然而,解释执行的速度通常比编译执行慢,因为解释器需要逐行解释和执行每一条指令。

汇编(Assembly)

汇编是一种将低级汇编语言代码转换为机器语言的处理方式。汇编器会读取汇编语言代码,并将其转换为机器码。与高级编程语言相比,汇编语言更接近计算机的底层架构。

汇编语言是一种与硬件相关的编程语言,它直接操作寄存器、内存和其他硬件资源。汇编代码可以更有效地与底层硬件进行交互,并且可以获得更高的执行速度。然而,汇编语言通常较为复杂,难以理解和维护。

编译、解释和汇编的区别如下所示:

- 编译是将高级代码一次性转换为机器码,而解释是逐行执行源代码并即时转换为机器码。

解释性语言和编译性语言的区别

解释性语言和编译性语言的区别

解释性语言和编译性语言的区别

计算机不能直接理解高级语言,只能直接理解机器语言,所以必须要把高级语言翻译成机器语言,计算机才能执行高级语言编写的程序。

翻译的方式有两种,一个是编译,一个是解释。两种方式只是翻译的时间不同。

编译性语言

编译型语言写的程序执行之前,需要一个专门的编译过程,把程序编译成为机器语言的文件,比如exe文件,以后要运行的话就不用重新翻译了,直接使用编译的结果就行了(exe文件),因为翻译只做了一次,运行时不需要翻译,所以编译型语言的程序执行效率高。

解释性语言

解释则不同,解释性语言的程序不需要编译,省了道工序,解释性语言在运行程序的时候才翻译,比如解释性java语言,专门有一个解释器能够直接执行java程序,每个语句都是执行的时候才翻译。这样解释性语言每执行一次就要翻译一次,效率比较低。

脚本语言

脚本语言是解释性语言。脚本语言一般都有相应的脚本引擎来解释执行。它们一般需要解释器才能运行。所以只要系统上有相应语言的解释程序就可以做到跨平台。脚本语言是一种解释性的语言,例如vbscript,javascript,installshield script等等,它不象c\c++等可以编译成二进制代码,以可执行文件的形式存在。

JAVA语言

java语言是解释性语言。java很特殊,java程序也需要编译,但是没有直接编译称为机器语言,而是编译称为字节码,然后用解释方式执行字节码。Java既可以被编译,也可以被解释。通过编译器,可以把Java程序翻译成一种中间代码 - 称为字节码 - 可以被Java解释器解释的独立于平台的代码。通过解释器,每条Java字节指令被分析,然后在计算机上运行。只需编译一次,程序运行时解释执行。

Java字节码使“写一次,到处运行”成为可能。可以在任何有Java编译器的平台上把Java程序编译成字节码。这个字节码可以运行在任何Java VM上。例如,同一个Java程序可以运行在WindowsNT、Solaris和Macintosh上。

源程序的编译与解释的基本概念

源程序的编译与解释的基本概念

源程序是使用特定编程语言编写的一段原始计算机代码,它是计算机程序的基础。在使用源程序之前,需要先对其进行编译或解释,这是计算机处理源程序的两种方法。以下是它们的基本概念及区别:

编译:

编译是把源程序转换成可执行的机器码的过程。编译器将源程序的代码翻译成计算机能够理解和执行的指令,并生成可执行程序或库文件。编译的过程包括词法分析、语法分析和代码生成等多个阶段,其中每个阶段都有自己的特定目的和操作。

解释:

解释是直接运行源程序的过程,将源程序代码逐行转换成计算机能够直接执行的机器语言代码。解释器类似于一个虚拟机,通过读取源程序的代码并逐个执行,实现了对源程序语句的解释和执行。解释器不像编译器那样需要编译生成可执行代码,因此较为灵活,允许程序员进行实时交互式开发。

编译与解释的区别:

1. 执行性能:

编译生成的可执行程序执行速度快,因为整个程序都被转化为机器码,解释则需要逐行解释执行。

2. 可移植性:

解释器通常具有很好的可移植性,因为它们不需要将程序转换为可执行机器码。而编译器则需要针对不同的硬件平台编写不同版本的代码。

3. 调试易用性:

编译器生成的代码难以直接调试,开发者需要使用特殊的工具进行调试。而解释器在执行过程中可以直接输出调试信息,方便开发者快速进行调试。

编译和解释的基本概念和区别就是以上内容。需要注意的是,选择编译还是解释会直接影响程序的性能,可移植性和开发调试效率等因素。因此,在实际开发中,程序员需要根据具体问题的要求来选择合适的方法。

编译原理答疑题

编译原理答疑题

1. 编译程序的结构是什么?

答:编译过程的六个阶段的任务,再加上表格管理和出错处理的工作可分别由几个模块或程序完成,它们分别称作词法分析程序、语法分析程序、语义分析程序、中间代码生成程序、代码优化程序、目标代码生成程序、表格管理程序和出错处理程序。

2. PL/0编译程序的结构是什么?

答:由PL/0的EBNF可知,PL/0语言可看成是PASCAL语言的子集,它的编译程序是一个编译解释执行系统。PL/0的目标程序为假想栈式计算机的汇编语言,与具体计算机无关。PL/0的编译程序和目标程序的解释执行程序都是用PASCAL语言书写的,因此PL/0语言可在配备PASCAL语言的任何机器上实现。其编译过程采用一趟扫描方式,以语法分

析程序为核心,词法分析程序和代码生成程序都作为一个独立的过程,当语法分析需要读单词时就调用词法分析程序,而当语法分析正确需生成相应的目标代码时,则调用代码生成程序。此外,用表格管理程序建立变量、常量和过程标识符的说明与引用之间的信息联系。用出错处理程序对词法和语法分析遇到的错误给出在源程序中出错的位置和错误性质。当源程序编译正确时,PL/0编译程序自动调用解释执行程序,对目标代码进行解释执行,并按用户程序要求输入数据和输出运行结果。

3.关系有哪些基本性质?

答:自反的 在集合X上的关系R,如对任意x∈X,均有(x,x) ∈R,则称关系R是自反的。

非自反的 在集合X上的关系R,如对任意x∈X,均有(x,x)R,则称关系R是非自反。

对称的 在集合X上的关系R,如果合(x,y) ∈R,便必有(y,x) ∈R,则称关系R是对

称的。

非对称的 在集合X上的关系R,如果有(x,y) ∈R丛x≠y,便必有(y,x)R,则称关系R是非对称的。

传递的 在集合X上的关系R,如果合(x,y) ∈R且(y,z) ∈R,必有(x,z) ∈R,则称关系R是传递的。

编译技术名词解释

基本知识

编译程序:就是指这样一种程序,通过它能够将用高级语言编写的源程序转换成与之在逻辑上等价的低级语言形式的目标程序

解释程序与编译程序的主要区别是:

*编译程序将源程序翻译成目标程序后再执行目标程序

*解释程序则是逐条读出源程序中的语句并解释执行,即在解释程序的执行过程中并不产生目标程序。

形式化方法是用一整套带有严格规定的符号体系来描述问题的方法。

文法是程序语言的生成系统

自动机是程序语言的识别系统

推导的每一步都是对当前句型中的最右非终结符用相应产生式的右部进行替换,这样的推导称为最右推导(规范推导)

最右推导的逆过程称为最左归约(规范归约)。

符号串集合的正闭包:设A是符号串的集合,

则称A+为符号串集A的正闭包。具体定义如下:

A+=A1∪A2∪A3…

符号串集合的(星)闭包:设A是符号串的集合,则称A*为符号串集A的星闭包。具体定义如下:

A*=A0∪A1∪A2∪A3…

二义性文法:文法G[S]的一个句子如果存在两棵不同的语法树,或者能找到两种不同的最左推导(或最右推导),则称这个文法是二义性的。

先天二义性文法:对于一个二义性文法G[S],如果能找到一个非二义性文法G'[S],使得L(G')=L(G),则该二义性文法的二义性是可以消除的。如果找不到这样的G'[S],则二义性文法描述的语言为先天二义性的。

推导的每一步都是对当前句型中的最右非终结符用相应产生式的右部进行替换,这样的推导称为最右推导(规范推导)

最右推导的逆过程称为最左归约(规范归约)。

符号串长度:|ab|=2,|ε|=0。 四元式,逆波兰 ,划分基本块,作流图

一个句型的最左直接短语称为该句型的句柄。 语法树的某个结点连同它的所有后代组成了一棵子树。

2型文法: 文法G的每一个产生式具有下列形式:

A→α

编译原理(王力红_著)习题答案

0p习题1

1-1 说明解释程序和编译程序的区别。

答:

通常,翻译程序可分为解释程序、汇编程序和编译程序。

所谓解释程序是一种将源程序按动态顺序逐句进行分析解释编译,边解释边执行、不产生目标程序的一种翻译程序。这种翻译程序结构简单、占用内存较少,易于在执行过程中对源程序进行修改,但工作效率低,只适合一些规模较小的语言,如解释BASIC等。

而编译程序(也称编译器)是源语言为某种高级语言,目标语言为相应于某一计算机的汇编语言或机器语言的一种翻译程序。这种编译程序将源程序翻译成执行时可完全独立于源程序的经优化的目标语言代码,因而运行效率高。更为重要的是,它使工作于高级语言环境下的程序设计人员,不必考虑与机器有关的繁琐细节,却能完成机器语言所能完成的绝大多数工作。

在解释方式下,并不生成目标代码,而是直接执行源程序本身。这是编译方式与解释方式的根本区别。

1-2 简述高级语言程序按编译方式的执行过程。

答:

高级语言程序按编译方式的执行过程一般可分为两个阶段:编译阶段和运行阶段。其中,编译阶段完成由源程序到目标程序的翻译,若目标程序是汇编语言程序,还需再通过汇编程序进一步翻译成机器语言程序。而运行阶段的任务是在目标计算机上执行编译阶段所得到的目标程序。但目标程序往往不能由计算机直接执行,一般还应有运行系统进行配合,这个运行系统包括链接程序和由这样一些子程序组成的系统库,如标准函数计算子程序、数组动态存储子程序等。由链接程序将目标程序和系统库连接在一起,最终形成一个可执行程序,在计算机上直接执行。

1-3 什么是编译系统?

答:

通常将编译程序、链接程序、系统库、源程序编辑程序等软件组成的系统称为编译系统。

1-4 编译过程通常有哪几个阶段?简述各阶段的主要任务。

答:

程序设计语言的编译过程一般可以分为词法分析、语法分析、语义分析和中间代码生成、代码优化、目标代码生成5个阶段。

词法分析是编译过程的第一个阶段。该阶段的主要任务是从构成源程序的字符串中识别出一个个具有独立意义的最小语法单位——单词,并指出其属性。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
相关文档
最新文档