当前位置:首页 » 编程软件 » 什么是大编译

什么是大编译

发布时间: 2023-07-03 00:21:36

编译和解释的区别是什么

1.定义区别

①编译原理旨在介绍编译程序构造的一般原理和基本方法。内容包括语言和文法、词法分析、语法分析、语法制导翻译、中间代码生成、存储管理、代码优化和目标代码生成。

②汇编语言(assembly language)是一种用于电子计算机、微处理器、微控制器或其他可编程器件的低级语言,亦称为符号语言。

2.处理方式区别

①编译过程与解释挺像,区别就在于编译是将所有的源代码指令一次性成翻目标代码并执行。

②汇编过程就是把汇编指令一对一地翻译成01机器码的过程。而采用这种处理方式的语言只有一类:汇编语言。

3.特点区别

①编译语言的特点就是不需要解释器的参与,所以运行比较快,但是编译好的程序只能在当前平台运行,是个局限性。

②汇编语言是当今世界上历史最早,应用最广,功能最强大,运行速度最快的编程语言。但是汇编语言开发工期长,可读性差,并且不能跨平台编程。

Ⅱ 什么是编译原理

编译原理是计算机专业的一门重要专业课,旨在介绍编译程序构造的一般原理和基本方法。内容包括语言和文法、词法分析、语法分析、语法制导翻译、中间代码生成、存储管理、代码优化和目标代码生成。 编译原理是计算机专业设置的一门重要的专业课程。虽然只有少数人从事编译方面的工作,但是这门课在理论、技术、方法上都对学生提供了系统而有效的训练,有利于提高软件人员的素质和能力。
这门课程关注的是编译器方面的产生原理和技术问题,似乎和计算机的基础领域不沾边,可是编译原理却一直作为大学本科的 必修课程,同时也成为了研究生入学考试的必考内容。编译原理及技术从本质上来讲就是一个算法问题而已,当然由于这个问题十分复杂,其解决算法也相对复杂。 我们学的数据结构与算法分析也是讲算法的,不过讲的基础算法,换句话说讲的是算法导论,而编译原理这门课程讲的就是比较专注解决一种的算法了。在20世纪 50年代,编译器的编写一直被认为是十分困难的事情,第一Fortran的编译器据说花了18年的时间才完成。在人们尝试编写编译器的同时,诞生了许多跟 编译相关的理论和技术,而这些理论和技术比一个实际的编译器本身价值更大。就犹如数学家们在解决着名的哥德巴赫猜想一样,虽然没有最终解决问题,但是其间 诞生不少名着的相关数论。

Ⅲ 编译程序和解释程序都是什么意思

1、编译程序是把用高级程序设计语言或计算机汇编语言书写的源程序,翻译成等价的机器语言格式目标程序的翻译程序,属于采用生成性实现途径实现的翻译程序。编译程序以高级程序设计语言书写的源程序作为输入,而以汇编语言或机器语言表示的目标程序作为输出;编译出的目标程序通常还要经历运行阶段,以便在运行程序的支持下运行,加工初始数据,算出所需的计算结果。

2、解释程序是高级语言翻译程序的一种,它将源语言书写的源程序作为输入,解释一句后就提交计算机执行一句,并不形成目标程序。就像外语翻译中的“口译”一样,说一句翻一句,不产生全文的翻译文本。

(3)什么是大编译扩展阅读:

编译程序的实现算法较为复杂。这是因为它所翻译的语句与目标语言的指令不是一一对应关系,而是一多对应关系;同时也因为它要处理递归调用、动态存储分配、多种数据类型,以及语句间的紧密依赖关系。但是,由于高级程序设计语言书写的程序具有易读、易移植和表达能力强等特点,编译程序广泛地用于翻译规模较大、复杂性较高、且需要高效运行的高级语言书写的源程序。

Ⅳ 什么是编译什么是运行

就说C语言吧,编译是把
xxx.c
的源代码转换成可执行的xxx.exe的过程。然后就可以直接运行了,xxx.c是没有办法直接运行的。

Ⅳ 编译程序是什么意思编译是什么意思

编译程序(Compiler,compiling program)也称为编译器,是指把用高级程序设计语言书写的源程序,翻译成等价的机器语言格式目标程序的翻译程序。

解释程序是一种语言处理程序,在词法、语法和语义分析方面与编译程序的工作原理基本相同,但在运行用户程序时,它直接执行源程序或源程序的内部形式(中间代码)。

(5)什么是大编译扩展阅读:

结构:

编译过程分为分析和综合两个部分,并进一步划分为词法分析、语法分析、语义分析、代码优化、存储分配和代码生成等六个相继的逻辑步骤。这六个步骤只表示编译程序各部分之间的逻辑联系,而不是时间关系。

编译过程既可以按照这六个逻辑步骤顺序地执行,也可以按照平行互锁方式去执行。在确定编译程序的具体结构时,常常分若干遍实现。对于源程序或中间语言程序,从头到尾扫视一次并实现所规定的工作称作一遍。每一遍可以完成一个或相连几个逻辑步骤的工作。

可以把词法分析作为第一遍;语法分析和语义分析作为第二遍;代码优化和存储分配作为第三遍;代码生成作为第四遍。反之,为了适应较小的存储空间或提高目标程序质量,也可以把一个逻辑步骤的工作分为几遍去执行。

Ⅵ 编译详细资料大全

编译(compilation , compile) 1、利用编译程式从源语言编写的源程式产生目标程式的过程。 2、用编译程式产生目标程式的动作。 编译就是把高级语言变成计算机可以识别的2进制语言,计算机只认识1和0,编译程式把人们熟悉的语言换成2进制的。 编译程式把一个源程式翻译成目标程式的工作过程分为五个阶段:词法分析;语法分析;语义检查和中间代码生成;代码最佳化;目标代码生成。主要是进行词法分析和语法分析,又称为源程式分析,分析过程中发现有语法错误,给出提示信息。

编译语言是一种以编译器来实现的程式语言。它不像直译语言一样,由解释器将代码一句一句运行,而是以编译器,先将代码编译为机器码,再加以运行。理论上,任何程式语言都可以是编译式,或直译式的。它们之间的区别,仅与程式的套用有关。

基本介绍

  • 中文名 :编译
  • 外文名 :compilation
  • 学科 :计算机科学
  • 用途 :编译程式
  • 解释 :编写的源程式产生目标程式的过程
  • 领域 :编译原理
编译程式,词法分析,语法分析,中间代码,代码最佳化,目标代码,表格管理,出错处理,

编译程式

将某一种程式设计语言写的程式翻译成等价的另一种语言的程式的程式, 称之为编译程式(compiler) .

词法分析

词法分析的任务是对由字符组成的单词进行处理,从左至右逐个字符地对源程式进行扫描,产生一个个的单词符号,把作为字符串的源程式改造成为单词符号串的中间程式。执行词法分析的程式称为词法分析程式或扫描器。 源程式中的单词符号经扫描器分析,一般产生二元式:单词种别;单词自身的值。单词种别通常用整数编码,如果一个种别只含一个单词符号,那么对这个单词符号,种别编码就完全代表它自身的值了。若一个种别含有许多个单词符号,那么,对于它的每个单词符号,除了给出种别编码以外,还应给出自身的值。 词法分析器一般来说有两种方法构造:手工构造和自动生成。手工构造可使用状态图进行工作,自动生成使用确定的有限自动机来实现。

语法分析

编译程式的语法分析器以单词符号作为输入,分析单词符号串是否形成符合语法规则的语法单位,如表达式、赋值、循环等,最后看是否构成一个符合要求的程式,按该语言使用的语法规则分析检查每条语句是否有正确的逻辑结构,程式是最终的一个语法单位。编译程式的语法规则可用上下文无关文法来刻画。 语法分析的方法分为两种:自上而下分析法和自下而上分析法。自上而下就是从文法的开始符号出发,向下推导,推出句子。而自下而上分析法采用的是移进归约法,基本思想是:用一个暂存符号的先进后出栈,把输入符号一个一个地移进栈里,当栈顶形成某个产生式的一个候选式时,即把栈顶的这一部分归约成该产生式的左邻符号。

中间代码

中间代码是源程式的一种内部表示,或称中间语言。中间代码的作用是可使编译程式的结构在逻辑上更为简单明确,特别是可使目标代码的最佳化比较容易实现中间代码,即为中间语言程式,中间语言的复杂性介于源程式语言和机器语言之间。中间语言有多种形式,常见的有逆波兰记号、四元式、三元式和树。

代码最佳化

代码最佳化是指对程式进行多种等价变换,使得从变换后的程式出发,能生成更有效的目标代码。所谓等价,是指不改变程式的运行结果。所谓有效,主要指目标代码运行时间较短,以及占用的存储空间较小。这种变换称为最佳化。 有两类最佳化:一类是对语法分析后的中间代码进行最佳化,它不依赖于具体的计算机;另一类是在生成目标代码时进行的,它在很大程度上依赖于具体的计算机。对于前一类最佳化,根据它所涉及的程式范围可分为局部最佳化、循环最佳化和全局最佳化三个不同的级别。

目标代码

目标代码生成是编译的最后一个阶段。目标代码生成器把语法分析后或最佳化后的中间代码变换成目标代码。目标代码有三种形式: ① 可以立即执行的机器语言代码,所有地址都重定位; ② 待装配的机器语言模组,当需要执行时,由连线装入程式把它们和某些运行程式连线起来,转换成能执行的机器语言代码; ③ 汇编语言代码,须经过汇编程式汇编后,成为可执行的机器语言代码。 目标代码生成阶段应考虑直接影响到目标代码速度的三个问题:一是如何生成较短的目标代码;二是如何充分利用计算机中的暂存器,减少目标代码访问存储单元的次数;三是如何充分利用计算机指令系统的特点,以提高目标代码的质量。

表格管理

编译过程中源程式的各种信息被保留在种种不同的表格,编译各阶段的工作都涉及到构造、查找、或更新有关的表格。 编译程式的公共辅助部分。对源程式中的各种量进行管理,登记在相应的表格。编译程式处理时通过查表得到所需的信息。

出错处理

如果编译过程中发现源程式有错误,编译程式应报告错误的性质和错误的发生的地点,并且将错误所造成的影响限制在尽可能小的范围内,使得源程式的其余部分能继续被编译下去,有些编译程式还能自动纠正错误,这些工作由错误处理程式完成。 需要注意的是,一般上编译器只做语法检查和最简单的语义检查,而不检查程式的逻辑。

Ⅶ 编译系统详细资料大全

编译系统又称为第二类编程环境开发者根据语言的规定编写源程式,然后进行编译、连线,生成执行档,例如DOS作业系统加各类高级语言,如FORTRAN、PASCLL、C语言等就属于这种类型接口平台,用于提供编译任务输入接口以及处理状态信息输出接口,并根据输入的编译任务生成任务名;编译服务器,用于解析所述任务名,获得相应的原始码,并进行编译,同时产生所述编译任务的处理状态信息提供给所述接口平台。

基本介绍

  • 中文名 :编译系统
  • 外文名 :Compiling system
  • 分类1 :MTK分散式编译系统
  • 分类2 :DM2预编译系统
  • 分类3 :编译系统CMake
过程,MTK分散式编译系统,DM2预编译系统,编译系统CMake,反编译系统,Symbian编译系统,

过程

接收输入的编译任务;根据所述编译任务生成任务名;解析获得所述任务名对应的原始码;编译所述原始码,并输出所述编译任务的处理状态信息。上述技术方案中,通过接口平台接收编译任务,由接口平台以任务名形式发起编译请求,进行编译,简化了编译输入操作;处理状态信息,通过接口平台实时提供给客户端,简化了编译监控操作,大大节约了人力资源。

MTK分散式编译系统

众所周知,MTK平台使用ARM ADS进行编译,一千多个源档案,单机需要四五十分钟才能完成,如果机器开着防毒软体,速度会更慢。为了提高编译速度,可以把防毒软体暂时停掉,但是效果不会太明显。解决问题的根本做法是利用网内闲置的机器,搭建一个分散式系统,多台机器同时编译,可以收到明显效果。 本系统由注册服务器、编译服务器和客户端组成。网内启动一个注册服务器,多个编译服务器。在MTK6223平台上,单机new一次需要50分钟的项目,使用10个编译服务器同时编译,new一次需要13分钟。模组编译之前是在客户端工作的,需要9分钟,其中为了实现分散式编译,压缩原始码占用了2分钟,档案下载到编译服务器需要2分钟。 从第一个模组编译到最后link之前,10台机器仅用4分钟就完成了1200个c档案的编译工作。最后的link是在本机进行的,几十秒就完了。 我曾经试过18台机器同时编译,1200个c档案不到2分钟就编译完成了,当然下载时间需要3分钟。对于开发人员来讲,new一次不再是梦魇。 当然,不能无限制地增加编译服务器,要考虑档案传输所消耗的时间。MTK平台档案很多,需要由客户端向服务器分发。一般地,一个客户端与十个服务器联合编译可以达到理想效果。

DM2预编译系统

预编译系统是DM2系统的重要组成部分。它支持在C程式中嵌入使用SQL语言,充分发挥语言数据类型丰富、处理方便灵活的优势,又以SQL语言弥补高级语言难以描述资料库操作的不足,为用户提供了建立大型管理信息系统和处理复杂事务所需要的工作环境。 预编译系统还支持互动式接口DM2-ISQL、套用开发工具集DM2-FORM、DM2-GRAPH、DM2-REPORT等工作环境。

编译系统CMake

CMake就像是我们在uni上使用的make一样,是用来管理怎样编译一个project的。它的好处是: 1) 跨越多个作业系统平台,包括当前套用最广泛的windows,unix(包括Mac OS X). 2) 采用BSD风格的协定开放原始码。据我个人阅读协定档案,没发现协定与两句BSD协定有什么不同。 3) 它可以支持具有非常复杂的路径、库依赖的程式的编译。比如它支持编译个程式:它依赖于很多的库以及其它一些代码档案,而每一个库又有很多子目录。。。 4) 像很多Make一样,它会对曾经编译的档案做一些cache一遍加速以后的编译。 使用这个编译系统的时候,需要每个目录/子目录创建一个名为CMakeLists.txt的档案。 这个项目历史也算是比较悠久了,从2000年就开始了。 当前使用这个编译系统的项目:llvm/clang。。。 我就是从clang的原始码里发现的,邮件列表里有人推荐使用cmake,不要使用msvc的.sln档案

反编译系统

高级语言源程式经过 编译 变成执行档,反编译就是逆过程。 但是通常不能把执行档变成高级语言原始码,只能转换成汇编程式。 计算机软体反向工程(Reversepengineering)也称为计算机软体还原工程,是指通过对他人软体的目标程式(可执行程式)进行“逆向分析、研究”工作,以推导出他人的软体产品所使用的思路、原理、结构、算法、处理过程、运行方法等设计要素,作为自己开发软体时的参考,或者直接用于自己的软体产品中。 反编译是一个复杂的过程,所以越是高级语言,就越难于反编译,但目前还是有许许多多的反编译软体: VB: VBExplorer ;只能反编译界面图像,好像代码不能完全反编译 java: JAD ;java的反编译比较常见,所以反编译比较完全C++ : eXeScope

Symbian编译系统

所谓编译,就是在编译程式读取源程式(字符流),对之进行词法和语法的分析,将高级语言指令转换为功能等效的 汇编代码,再由汇编程式转换为机器语言,并且按照作业系统对执行档格式的要求连结生成可执行程式。 UNIX环境下的C编译系统所遵循的也是这么一个一般的过程。值得注意的是这个过程并不是有某个单个程式完成的,而是有多个分别完成某一方面工作的程式组合完成的。这一设计思想同我们最初提到的UNIX系统软体功能专一的特点是相符的。 归纳起来,可以将UNIX环境下C编译系统的工作过程下图所示。 C源程式头档案-->预编译处理(cpp)-->编译程式本身-->最佳化程式-->汇编程式-->连结程式-->执行档 一般我们用命令来完成对源程式的编译工作。此命令并不是一个二进制的可执行程式,而是一个shell命令档案。它的工作就是依次调用我们上面所列出的各个完成某部分工作的具体程式,将指定的c源程式转换成可执行的代码。 在UNIX系统中,实现C源程式到执行档的这一转换过程的工具是。在大多数系统中实际上是一个shell命令档案。有些系统中的C编译程式可能并不叫而是其它的一个什么名称,如Sun工作站上常用的g等等。但这些都无关紧要。大多数系统中C编译命令的用法基本上都是类似的。我们这里介绍的将以SVR4上的C编译系统为基础。 其中我们也要知道编译系统也是一个系统软体,而不是套用软体。

Ⅷ 解释和编译有什么区别

一、与计算机的交流方式不同

1、解释程序不产生目标代码,它逐条地取出源程序中的语句,边解释,边执行;解释器把源代码文件边解释成机器语言边交给CPU执行。

三、开发便捷性

1、解释程序可以随时修改,立刻生效,改完源代码后,直接运行看效果

2、编译程序每次修改源代码,都要重新编译,生成机器码文件

四、运行速度

1、解释程序运行效率低,所有的代码均需经过解释器边解释变执行,速度比编译型慢很多

2、编译程序执行速度快,因为你的程序代码已经翻译成了是计算机可以理解的机器语言。

Ⅸ 小白求助,编译是什么,为什么需要编译

人与机器交流(即人让计算机按照人的意愿做事)依赖于语言
语言的层次是:自然语言->高级编程语言->汇编语言->机器码
人最熟悉的肯定是自然语言(就是你平时说的话)。
而计算机的cpu只认识二进制的机器码,机器码指导计算机做什么操作(如逻辑运算)。
高级编程语言跟自然语言的关系更近些,对人来说相当于自然语言的白痴版,如java中的对象与类的概念可能对应于现实世界的某种事物,如C语言中的函数可能对应了一个功能,比如打印文件,经过简单的训练,人也能大概的读懂。
汇编语言和机器码更接近些,每个汇编指令一般都会对应一条机器码,而高级编程语言中的一个语句(如if else什么的)可能会对应多条汇编指令,汇编指令一般就是算术运算(如add)、逻辑运算(如and)、数据传送(如mov)、条件判断、跳转等,只能用这些简单功能的汇编指令组合来完成一个复杂的功能。人看懂汇编就很吃力了,更别提用汇编来完成想要的功能,太吃力,这个过程还是交个编译器比较好。
而机器码对于一般的程序员来说,就是天书,也基本没人愿意去看。
自然语言最容易表述人们的要求,当用户用自然语言表述了需要的功能后,从自然语言到高级语言的转换过程由程序员来完成,而由高级编程语言到汇编、由汇编到机器码的过程都由编译器来完成,由编译器完成的这个过程也就是编译了。
高级编程语言的代码经过编译阶段成为汇编代码,汇编代码经过汇编阶段变成机器码,机器码文件经过链接阶段变成可执行文件(.exe)。一般编译是指的编译阶段和汇编阶段的组合,编译器的工作一般是编译和链接。
这就是我的理解,希望你帮到你。

热点内容
解压带教程 发布:2025-02-08 01:16:33 浏览:758
什么是程序存储器 发布:2025-02-08 01:05:01 浏览:313
解压包手机安装 发布:2025-02-08 00:49:29 浏览:960
詹雯婷访问 发布:2025-02-08 00:42:02 浏览:309
php无限分类树 发布:2025-02-08 00:42:01 浏览:814
clang编译命令 发布:2025-02-08 00:41:24 浏览:127
数据结构c语言版算法 发布:2025-02-08 00:28:19 浏览:663
python环境管理 发布:2025-02-08 00:26:51 浏览:999
个人简历源码 发布:2025-02-08 00:26:43 浏览:14
html5canvas上传图片 发布:2025-02-08 00:20:44 浏览:169