全部科目 > 程序员 >
2014年下半年 上午试卷 综合知识
第 29 题
知识点 编译程序基本原理   解释程序基本原理   编译器   高级语言  
关键词 编译器   高级语言   解释器   源程序   编译   语言  
章/节 软件基础知识  
 
 
编译器和解释器的工作过程中,(29)是指对高级语言源程序进行分析以识别出记号的过程。
 
  A.  词法分析
 
  B.  语法分析
 
  C.  语义分析
 
  D.  代码优化
 
 




 
 
相关试题     语言处理程序基础 

  第29题    2019年下半年  
编译和解释是实现高级程序设计语言的两种基本方式,(29)是这两种方式的主要区别。

  第29题    2018年下半年  
编译过程中,词法分析不能( )。
①去除源程序中的注释 ②识别记号(单词、符号)
③识别结构不正确的语句 ④识别含义不正确的语句

  第31题    2011年下半年  
编译程序与解释程序的不同之处是(31)。

 
知识点讲解
· 编译程序基本原理
· 解释程序基本原理
· 编译器
· 高级语言
 
        编译程序基本原理
        编译程序的功能就是把用某种高级语言书写的源程序翻译成与之等价的低级语言的目标程序,如下图所示。
        
        编译程序的功能
        编译程序一般可划分为前后衔接的6个阶段:词法分析、语法分析、语义分析、中间代码生成、代码优化和目标代码生成,如下图所示。
        
        编译程序的结构
               词法分析阶段的主要任务
               词法分析阶段是编译过程的第一个阶段。词法分析的任务是:从左到右一个个字符地输入源程序,对构成源程序的字符串进行扫描和分解,识别出一个个的单词符号(简称单词或符号)。单词是程序设计语言的基本语法符号,如保留字(begin、end、if、for和while等)、标识符、常数、算符及界符(标点符号和左右括号等)。
               在词法分析这一阶段的工作中,所依循的是语言的构词规则。
               语法分析阶段的主要任务
               语法分析的任务是:在词法分析的基础上,根据语言的语法规则(文法规则),把单词符号串分解成各类语法单位,如"短语""子句""句子"("语句")、"程序段"和"程序"。通过语法分解,确定整个输入串是否构成一个语法上正确的"程序"。在语法分析这一阶段的工作中,所依循的是语言的语法规则。
               语义分析阶段的主要任务
               语义分析阶段主要检查源程序是否包含语义错误,并收集类型信息供后面的代码生成阶段使用,只有语法和语义都正确的源程序才能被翻译成正确的目标代码。语义分析的一个主要工作是进行类型分析和检查。程序语言中的一个数据类型一般包含两个方面的内容:类型的载体及其上的运算。
               中间代码生成阶段的主要任务
               中间代码产生的任务是根据语义分析的输出生成中间代码。中间代码是一种简单且含义明确的记号系统。中间代码设计原则有两点:一是容易生成;二是容易将它翻译成目标代码。
               代码优化阶段的主要任务
               代码优化的任务是:对前阶段产生的中间代码进行加工变换,以期在最后阶段能产生更为高效(省时间和省空间)的目标代码。优化的主要方面有:公共子表达式的提取、循环优化和算符归约等。在代码优化这一阶段的工作中,所依循的原则是程序的等价变换规则。
               目标代码生成阶段的主要任务
               目标代码生成的任务是:把中间代码(或者经优化处理之后)变换成特定机器上的绝对指令代码、可重新定位的指令代码或者汇编指令代码。这一阶段实现了最后的翻译,它的工作有赖于硬件系统结构和机器指令含义。这一阶段的工作也是最复杂的,涉及计算机硬件系统功能部件的运用,机器指令的选择,各种数据类型变量的存储空间分配,以及寄存器和后缓寄存器的调度等。
               在编译过程中,汇编源程序的各种信息被保留在各种不同的表格里,编译各阶段的工作都涉及构造、查找,或者更新有关的表格。因此,编译程序中必须含有一组管理各种表格的程序。
               如果汇编源程序有错误,编译程序应该设法发现错误,把有关信息报告给用户。这部分工作是由专门的一组出错处理程序完成的,它与编译各阶段都有联系。因此,编译程序中必须含有一组出错处理程序。
 
        解释程序基本原理
        解释程序是另一种语言处理程序,在词法、语法和语义分析方面与编译程序的工作原理基本相同,但是在运行用户程序时,它直接执行源程序,不产生源程序的目标程序。
        下面简要描述一下解释程序的结构,这类系统通常可以分为两部分:第一部分是分析部分,包括词法分析、语法分析和语义分析程序,经语义分析后把源程序翻译成中间代码,中间代码通常用逆波兰式表示;第二部分是解释部分,用来对第一部分产生的中间代码进行解释执行。
 
        编译器
        编译阶段要做的工作是用交叉编译或汇编工具处理源代码,产生目标文件。在嵌入式系统中,宿主机和目标机所采用的处理器芯片通常是不一样的。例如,目标机采用的CPU是DragonBall M68x系列或ARM系列,而宿主机采用的是x86系列。因此,为了把宿主机上编写的高级语言程序编译成可以在目标机上运行的二进制代码,就需要用到交叉编译器。
        与普通PC中的C语言编译器不同,嵌入式系统中的C语言编译器要进行专门的优化,以提高编译效率。一般来说,优秀的嵌入式C编译器所生成的代码,其长度和执行时间仅比用汇编语言编写的代码长5%~20%。编译质量的不同,是区别嵌入式C编译器工具的重要指标。因此,硬件厂商往往会针对自己开发的处理器的特性来定制编译器,既提供对高级语言的支持,又能很好地对目标代码进行优化。
        GNU C/C++(gcc)是目前比较常用的一种交叉编译器,它支持非常多的宿主机/目标机组合。宿主机可以是Unix、AIX、Solaris、Windows、Linux等操作系统,目标机可以是x86、Power PC、MIPS、SPARC、Motorola 68K等各种类型的处理器。
        gcc是一个功能强大的工具集合,包含了预处理器、编译器、汇编器、连接器等组件。它在需要时会去调用这些组件来完成编译任务,而输入文件的类型和传递给gcc的参数决定了它将调用哪些组件。对于一般或初级的开发者,它可以提供简单的使用方式,即只给它提供C源码文件,它将完成预处理、编译、汇编、连接等所有工作,最后生成一个可执行文件。而对于中高级开发者,它提供了足够多的参数,可以让开发者全面控制代码的生成,这对于嵌入式系统软件开发来说是非常重要的。
        gcc识别的文件类型主要包括:C语言文件、C++语言文件、预处理后的C文件、预处理后的C++文件、汇编语言文件、目标文件、静态链接库、动态链接库等。以C程序为例,gcc的编译过程主要分为4个阶段:
        (1)预处理阶段,即完成宏定义和include文件展开等工作;
        (2)根据编译参数进行不同程度的优化,编译成汇编代码;
        (3)用汇编器把上一阶段生成的汇编码进一步生成目标代码;
        (4)用连接器把上一阶段生成的目标代码、其他一些相关的系统目标代码以及系统的库函数连接起来,生成最终的可执行代码。
        用户可以通过设定不同的编译参数,让gcc在编译的不同阶段停止下来,这样可以检查编译器在不同阶段的输出结果。
        在gcc的高级用法上,一般希望通过使用编译器达到两个目的:检查出源程序的错误;生成速度快、代码量小的执行程序。这可以通过设置不同的参数来实现,例如,“-Wall”参数可以发现源程序中隐藏的错误;“-O2”参数可以优化程序的执行速度和代码大小;“-g”参数可以对执行程序进行调试。
 
        高级语言
        不论是机器语言还是汇编语言都是面向硬件的具体操作的,语言对机器的过分依赖,要求使用者必须对硬件结构及其工作原理都十分熟悉,非计算机专业人员是难以做到的,对于计算机的推广应用是不利的。计算机事业的发展,促使人们去寻求一些与人类自然语言相接近且能为计算机所接受的语意确定、规则明确、自然直观和通用易学的计算机语言。这种与自然语言相近并为计算机所接受和执行的计算机语言称高级语言。高级语言是面向用户的语言,每一种高级(程序设计)语言,都有自己人为规定的专用符号、英文单词、语法规则和语句结构(书写格式)。高级语言与自然语言(英语)更接近,而与硬件功能相分离(彻底脱离了具体的指令系统),便于广大用户掌握和使用。高级语言的通用性强,兼容性好,便于移植。
        高级语言主要是相对于汇编语言而言,它并不是特指某一种具体的语言,而是包括了很多编程语言。它又可分为面向过程的语言和面向问题的语言,前者在编程时不仅要告诉计算机“做什么”,而且要告诉计算机“怎么做”,如Basic,Pascal, Fortran, C等高级语言。后者只要告诉计算机做什么,如Lisp,Prolog等高级语言,也常称为人工智能语言。



更多复习资料
请登录电脑版软考在线 www.rkpass.cn

京B2-20210865 | 京ICP备2020040059号-5
京公网安备 11010502032051号 | 营业执照
 Copyright ©2000-2023 All Rights Reserved
软考在线版权所有