精华内容
下载资源
问答
  • 编译原理-编译程序基础知识

    千次阅读 2018-03-18 18:15:33
    本文主要讲的什么是编译程序,编译的各个阶段 什么是编译程序 源语言是像FORTRAN、Pascal或C那样的高级语言,目标语言是像汇编语言或机器语言那样的低级语言,这种翻译程序就叫做编译程序 翻译程序:就是把一种...

    本文主要讲的什么是编译程序,编译的各个阶段

    什么是编译程序

    源语言是像FORTRAN、Pascal或C那样的高级语言,目标语言是像汇编语言或机器语言那样的低级语言,这种翻译程序就叫做编译程序

    翻译程序:就是把一种语言(称为源语言)书写的程序翻译成另外一种语言(称为目标语言)的等价程序。

    一个编译程序的输入可能要由一个或多个预处理程序来产生

    预处理:一个源程序可能分成几个模块放在不同的文件里,将这些源程序汇集在一起的任务,由一个叫预处理程序的程序来完成,有些预处理程序也负责宏展开、文件合并等任务

    编译的各个阶段

    1、词法分析:编译过程的第一阶段

    任务:从左到右一个字符一个字符地读入源程序,对构成源程序的字符流进行扫描和分解,从而识别出一个个单词。

    2、语法分析:编译过程的第二阶段

    任务:在词法分析的基础上将单词序列分解成各类语法短语,如“程序、语句、表达式”等;这种语法短语也称为短语单位,可表示成语法树。

    例如: id1 := id2 + id3 * 10;
    这里写图片描述

    这里写图片描述

    3、语义分析:编译过程的第三个过程,审查源程序有无语义错误,为代码生成阶段收集类型信息。

    4、中间代码生成(该过程不是必须的)

    所谓中间代码 是一种结构简单、含义明确的记号系统,这种记号系统可以设计成多种多样的形式。
    设计的原则:一是容易生成; 二是:容易将他翻译成目标代码。

    5、代码优化 (该过程不是必须的)

    任务:对前一阶段产生的中间代码进行变换或进行改造,目的是使生成的目标代码更为高效,即节省时间和省空间。

    6、目标代码生成(编译过程的最后阶段)

    任务:把中间代码变换成特定的机器上的绝对指令代码或可重定位的指令代码活汇编指令代码。它的工作与硬件系统结构和指令含义有关。

    一个完整的编译程序还必须包括表格管理和出错处理程序。

    展开全文
  • 编译程序的五个阶段

    千次阅读 2019-04-03 10:53:24
    语法分析:任务是在词法分析的基础上,根据语言的语法规则,把单词符号串分解成各类语法单位(语法范畴),如“短语”、“句子”、“程序段”、和“程序”等。词法分析和语法分析本质都是对源程序的结构进行分析。 ...

    第一阶段
    词法分析:任务是输入源程序,对构成源程序的字符串进行扫描和分析,识别出一个个的单词。
    第二阶段
    语法分析:任务是在词法分析的基础上,根据语言的语法规则,把单词符号串分解成各类语法单位(语法范畴),如“短语”、“句子”、“程序段”、和“程序”等。词法分析和语法分析本质都是对源程序的结构进行分析。
    第三阶段
    词义分析:任务是对语法分析所识别出的各类语法范畴,分析其含义。语义分析一个主要工作是进行类型分析和检查。
    第四阶段
    优化:任务在于对前段产生的中间代码进行加工变换,以期在最后阶段能产生出更为高效(省时间和空间)的目标代码。
    第五阶段
    目标代码生成:把中间代码(或经优化处理之后)变换成特定机器上的低级语言代码。

    展开全文
  • 1)简述编译程序与翻译程序、汇编程序的联系与区别。  翻译程序指把高级语言源程序翻译成机器语言源程序(目标代码)的软件。翻译程序有两种:一种是编译程序,它将高级语言源程序一次性全部翻译成目标程序,每次...

    1)简述编译程序与翻译程序、汇编程序的联系与区别。

      翻译程序指把高级语言源程序翻译成机器语言源程序(目标代码)的软件。翻译程序有两种:一种是编译程序,它将高级语言源程序一次性全部翻译成目标程序,每次执行程序时,只要执行目标程序。另一种是解释程序,它的执行过程是翻译一句执行一句,并且不会生成目标程序。

    编译程序是先完整编译后运行的程序,如C、C++等;解释程序是一句一句翻译且边翻译边执行的程序,如JavaScript、Python等。如图

     

     

      汇编程序也是一种语言翻译程序,它把汇编语言源程序翻译成机器语言程序。

      编译程序汇编程序的区别:如果源语言是诸如C、C++、Java等“高级语言”,而目标语言是诸如汇编语言或机器语言之类的“低级语言”,这样的一个翻译程序称为编译程序。如果源语言是汇编语言,而目标语言是机器语言,这样的一个翻译程序称为汇编程序。

     

    2)编译过程包括哪几个主要阶段及每个阶段的主要功能。

      编译阶段也常常划分为两大步骤,分析步骤综合步骤 分析步骤和综合步骤 分析步骤是指对源程序的分析 -线性分析(词法分析或扫描) -层次分析(语法分析) -语义分析 综合步骤是指后端的工作,为目标程序的生成而进行的综合。

     

    3)简述解释程序与编译程序的区别。

      编译程序能生成目标程序,而解释程序不能。编译程序是整体编译完了,再一次性执行。而解释程序是一边解释,一边执行。 解释一句后就提交计算机执行一句,并不形成目标程序。就像外语翻译中的“口译”一样,说一句翻一句,不产生全文的翻译文本。编译器是把源程序的每一条语句都编译成机器语言,并保存成二进制文件,这样运行时计算机可以直接以机器语言来运行此程序,速度很快。而解释器则是只在执行程序时,才一条一条的解释成机器语言给计算机来执行,所以运行速度是不如编译后的程序运行的快的。这是因为计算机不能直接认识并执行我们写的语句,它只能认识机器语言(是二进制的形式)。

     

     4)了解新开源的华为方舟编译器(https://www.openarkcompiler.cn/home),理解并谈谈它的基本思想与采用的技术路线,以及它对安卓软件生态会有什么影响

      众所周知,搭载安卓系统的手机在经过长时间的使用之后,经常会出现使用卡顿和图像传输延后以及网络连接不畅等问题。长期以来这个问题一直没能彻底解决,方舟编译器或许是这个问题的终结者。其实,方舟编译器是华为历经多年打造出来的秘密武器,也许大家不是很了解什么是方舟翻译器,举个例子好了,当我们碰到外国人并且语言不通的时候,这个时候就需要一个中介作为翻译传递互相的信息。

      简单来说,方舟编译器就是可以将高级语言比如Java,直接编译成变成机器码的技术。它最大的优势就在于绕过了安卓系统的VM(虚拟机),从使得应用可以像苹果引以为傲的iOS系统一样,转化出的机器码可以直接由CPU运算,从而使得运行效率大大提升

       更详细的说,现在的安卓手机采用的是动态编译,在手机上进行编译,往往有部分程序需要一边转换一边执行,影响程序执行的效率。而方舟编译器是采用全新的系统及应用的编译和运行机制,对所有的 Java 语义全部做到静态编译,直接将Java 语言“翻译”成机器语言,代替高资源消耗的动态编译。所以相比起单纯的翻译机器来说,华为方舟编译器更像是让您直接获得了语言能力,对比单纯作为翻译中介,更将运行效率大幅度提升,从根本上改善安卓系统运行慢的弊端。

      根据华为实验室的测试数据,EMUI 9.1 在仅仅对系统组件 System Server 应用了华为方舟编译器后,系统操作流畅度提升 24%,系统响应性能提升 44%。同时,新浪微博极速版在应用方舟编译器之后,操作流畅度最高提升了60%。根据华为的监测数据来看,方舟编译器可以说是给安卓系统带来了一场革命性的升级变革,着实让业界侧目。

      

     

    转载于:https://www.cnblogs.com/Rakers1024/p/11457336.html

    展开全文
  • 编译程序工作过程

    千次阅读 2018-04-26 15:21:22
    问:编译程序绝大多数时间花在 _____ 上。 答:表格管理 编译程序也叫编译系统,是把用高级语言编写的面向过程的源程序翻译成目标程序的语言处理程序。编译程序把一个源程序翻译成目标程序的工作过程分为五个阶段...
    https://zhidao.baidu.com/question/6822600.html
    
    问:编译程序绝大多数时间花在 _____ 上。 
    答:表格管理
    
    编译程序也叫编译系统,是把用高级语言编写的面向过程的源程序翻译成目标程序的语言处理程序。
    编译程序把一个源程序翻译成目标程序的工作过程分为五个阶段:词法分析;语法分析;中间代码生成;代码优化;目标代码生成。主要是进行词法分析和语法分析,又称为源程序分析,分析过程中发现有语法错误,给出提示信息。
    (1) 词法分析
    词法分析的任务是对由字符组成的单词进行处理,从左至右逐个字符地对源程序进行扫描,产生一个个的单词符号,把作为字符串的源程序改造成为单词符号串的中间程序。执行词法分析的程序称为词法分析程序或扫描器。
    源程序中的单词符号经扫描器分析,一般产生二元式:单词种别;单词自身的值。单词种别通常用整数编码,如果一个种别只含一个单词符号,那么对这个单词符号,种别编码就完全代表它自身的值了。若一个种别含有许多个单词符号,那么,对于它的每个单词符号,除了给出种别编码以外,还应给出自身的值。
    词法分析器一般来说有两种方法构造:手工构造和自动生成。手工构造可使用状态图进行工作,自动生成使用确定的有限自动机来实现。
    (2) 语法分析
    编译程序语法分析器以单词符号作为输入,分析单词符号串是否形成符合语法规则的语法单位,如表达式、赋值、循环等,最后看是否构成一个符合要求的程序,按该语言使用的语法规则分析检查每条语句是否有正确的逻辑结构,程序是最终的一个语法单位。编译程序的语法规则可用上下文无关文法来刻画。
    语法分析的方法分为两种:自上而下分析法和自下而上分析法。自上而下就是从文法的开始符号出发,向下推导,推出句子。而自下而上分析法采用的是移进归约法,基本思想是:用一个寄存符号的先进后出栈,把输入符号一个一个地移进栈里,当栈顶形成某个产生式的一个候选式时,即把栈顶的这一部分归约成该产生式的左邻符号。
    (3) 中间代码生成
    中间代码是源程序的一种内部表示,或称中间语言。中间代码的作用是可使编译程序的结构在逻辑上更为简单明确,特别是可使目标代码的优化比较容易实现。中间代码即为中间语言程序,中间语言的复杂性介于源程序语言和机器语言之间。中间语言有多种形式,常见的有逆波兰记号、四元式、三元式和树。
    (4) 代码优化
    代码优化是指对程序进行多种等价变换,使得从变换后的程序出发,能生成更有效的目标代码。所谓等价,是指不改变程序的运行结果。所谓有效,主要指目标代码运行时间较短,以及占用的存储空间较小。这种变换称为优化。
    有两类优化:一类是对语法分析后的中间代码进行优化,它不依赖于具体的计算机;另一类是在生成目标代码时进行的,它在很大程度上依赖于具体的计算机。对于前一类优化,根据它所涉及的程序范围可分为局部优化、循环优化和全局优化三个不同的级别。
    (5) 目标代码生成
    目标代码生成是编译的最后一个阶段。目标代码生成器把语法分析后或优化后的中间代码变换成目标代码。目标代码有三种形式:
    ① 可以立即执行的机器语言代码,所有地址都重定位;
    ② 待装配的机器语言模块,当需要执行时,由连接装入程序把它们和某些运行程序连接起来,转换成能执行的机器语言代码;
    ③ 汇编语言代码,须经过汇编程序汇编后,成为可执行的机器语言代码。
    目标代码生成阶段应考虑直接影响到目标代码速度的三个问题:一是如何生成较短的目标代码;二是如何充分利用计算机中的寄存器,减少目标代码访问存储单元的次数;三是如何充分利用计算机指令系统的特点,以提高目标代码的质量。
    
    
    表格管理;
    编译的每个阶段所需要的信息多数从表格中读取,产生的中间结果都记录在相应的表格中,可以说整个编译过程就是造表、查表的过程。
    展开全文
  • 编译程序基本原理

    千次阅读 2018-06-25 21:40:01
    编译程序和解释程序 人们利用高级语言与计算机进行交互, 但计算机仍然只能理解和执行由 0, 1序列构成的机器语言, 因此高级程序设计语言需要翻译, 担负这一任务的程序称为"语言处理程序", 由于应用的不同, 语言之间...
  • 编译程序和解释程序

    千次阅读 2018-05-28 14:15:28
    编译程序是一个语言处理程序,它可以把高级语言程序给翻译成某个机器的汇编语言程序或者是二进制代码程序,这个阶段叫做编译阶段,需要注意的是编译和运行是两个分开的阶段,也就是说我程序必须要全部翻译完毕之后,...
  • 编译程序完成从源程序到目标程序的翻译工作,是一个复杂的整体的过程。从概念上来讲,一个编译程序的整个工作过程是划分成阶段进行的,每个阶段将源程序的一种表示形式转换成另一种表示形式,各个阶段进行的操作在...
  • 第二阶段:语法分析:任务是在词法分析的基础上,根据语言的语法规则,把单词符号串分解成各类语法单位(语法范畴),如“短语”、“句子”、“程序段”、和“程序”等。词法分析和语法分析本质都是对源程序的结构...
  • 什么是编译程序

    千次阅读 2017-05-19 16:04:45
    编译程序也叫编译系统,是把用高级语言编写的面向过程的源程序翻译成目标程序的语言处理程序。 编译程序把一个源程序翻译成目标程序的工作过程分为五个阶段:词法分析;语法分析;中间代码生成;代码优化;目标代码...
  • C源程序头文件-->预编译处理(cpp)-->编译程序本身-->优化程序-->汇编程序-->链接程序-->可执行文件 编译,编译程序读取源程序(字符流),对之进行词法和语法的分析,将高级语言指令转换为功能等效的...
  • 编译程序的工作过程

    千次阅读 2017-04-16 22:17:12
    编译程序的工作过程一般划分为五个阶段:词法分析、语法分析、语义分析与中间代码产生、优化、目标代码生成。 词法分析:也就是从左到右一个一个的读入源程序,识别一个单词或符号,并进行归类。 语法分析:...
  • 高级编程语言(high level programming language):如Java、C#等  低级编程语言(low lever ... 编译程序(compiler)  机器语言(machine language 由0和1组成的比特流)  汇编程序是把汇编指令转换为可执
  • C语言程序编译的几个阶段

    千次阅读 2018-02-04 19:19:04
    程序编译的过程中就是将用户的文本形式的源代码(c/c++)转化成计算机可以直接执行的机器代码的过程。主要经过这么几个过程: 1、编译,由编译器将c源代码(.cpp)转变成汇编代码(.s) 2、汇编,由汇编器将汇编...
  • 程序编译的几个阶段

    千次阅读 2017-03-14 13:07:01
    程序编译的过程中就是将用户的文本形式的源代码(c/c++)转化成计算机可以直接执行的机器代码的过程。主要经过这么几个过程: 1、编译,由编译器将c源代码(.cpp)转变成汇编代码(.s) 2、汇编,由汇编器将汇编代码...
  • 编译就是要把高级语言的源程序翻译成目标程序的过程。 一般整个过程可划分为词法分析、语法分析、语义分析、中间代码生成、代码优化和目标代码生成6个阶段。 有一种说法 编译有七个过程 预处理,词法分析,语法...
  • PL/0语言编译程序分析

    万次阅读 2002-08-15 09:22:00
    PL/0语言是Pascal语言的一个子集,我们这里分析的PL/0的编译程序包括了对PL/0语言源程序进行分析处理、编译生成类PCODE代码,并在虚拟机上解释运行生成的类PCODE代码的功能。 PL/0语言编译程序采用以语法分析为核心...
  • 编译原理:解释程序

    千次阅读 2018-05-18 17:36:12
    编译程序是一个语言处理程序,它把一个高级语言程序翻译成某个机器的汇编语言程序或二进制代码程序,这个二进制代码程序在机器上运行以生成结果。因此通过编译程序使得程序员可以先准备好一个在该机器上运行的程序。...
  • 上篇我们介绍了什么是编译程序,简单提到了这个“工厂”工作的六个阶段。本篇介绍一下这六个阶段。 “工厂”导航图(翻译工作的过程):
  • 程序编译与代码优化

    千次阅读 2016-05-31 15:20:23
    Java语言的“编译期”是一“不确定”的操作过程,因为它可能是指一个前端编译器(其实叫“编译器的前端”更准确一些)把*.java文件转变成*.class文件的过程;也可能是指虚拟机的后端运行期编译器(JIT编译器,just...
  • C语言程序的存储区域和编译过程

    千次阅读 2014-07-02 22:58:13
    编译,编译程序读取源程序(字符流),对之进行词法和语法的分析,将高级语言指令转换为功能等效的汇编代码,再由汇编程序转换为机器语言,并且按照操作系统对可执行文件格式的要求链接生成可执行程序。 C源程序...
  • gcc编译C++程序

    万次阅读 2015-11-16 12:55:59
    单个源文件生成可执行程序 下面是一个保存在文件 helloworld.cpp 中一个简单的 C++ 程序的代码:  /* helloworld.cpp */ #include int main(int argc,char *argv[]) { std::cout , world" ; return(0); }程序...
  • 编译概述与引论

    千次阅读 2016-07-20 20:02:08
    本博文中,介绍编译程序的基本概念,概述编译过程和编译程序结构,编译程序和程序设计环境以及编译程序的生成过程和构造工具知识。什么叫编译程序通常,我们所说的翻译程序是指这样的一个程序,它能够把某一种语言...
  • 编译过程的五个阶段

    万次阅读 2018-06-14 14:48:52
    编译程序的工作,从输入源程序开始到输出目标程序为止的整个过程,是非常复杂的。但就其过程而言,它与人们进行自然语言直接的翻译有许多相近之处。当我们把一种文字翻译为另一种文字,例如把一英文翻译为中文时,...
  • 单片机程序编译原理

    千次阅读 2010-10-28 11:43:00
    单片机程序编译原理::编译程序读取源程序(字符流),对之进行词法和语法的分析,将高级语言指令转换为功能等效的汇编代码,再由汇编程序转换为机器语言,并且按照操作系统对可执行文件格式的要求链接生成可执行...
  • 一、程序设计语言基本概念 1....2 MOV BX,3 ADD AX,BX (2)高级语言 高级语言是从人类的逻辑思维角度出发、面向各类应用的程序语言,抽象程度大大提高,需要编译成特定机器上的目标代码才能执行。...
  • 从计算机程序出现的第一天起,对效率的追求就是程序天生的坚定信仰,这个过程犹如一场没有终点,永不停歇的F1方程式竞赛,程序员试车手,技术平台则是在赛道上飞驰的赛车。 文章目录早期(编译期)优化概述Javac...
  • 编译原理】引论

    千次阅读 2020-02-18 20:59:54
    文章目录编译原理引论(一)认识编译程序(二)编译过程概述1、阶段划分2、编译程序的结构3、编译程序的生成 编译原理引论 (一)认识编译程序 什么是编译程序? 这要从翻译程序、解释程序以及编译程序的联系与区别...
  • C源程序完整编译过程

    千次阅读 2016-07-22 18:24:54
    下面总结一下编译的完整过程: C源程序-->预编译处理(.c)-->编译、优化程序(.s、.asm)-->汇编程序(.obj、.o、.a、.ko)-->链接程序(.exe、.... 对于一个伪指令,预编译所要做的是将程序中的所有N用6替换

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 388,595
精华内容 155,438
关键字:

编译程序的前段