导航:首页 > 源码编译 > 编译五个阶段涉及硬件

编译五个阶段涉及硬件

发布时间:2024-01-24 08:38:44

㈠ c编译程序是什么

c编译程序是将c语言程序编译成目标代码程序的程序,即正确答案应该选择D。

1、c语言是目前世界上最流行、使用最广泛的面向过程的高级程序设计语言。 c语言对操作系统和系统使用程序以及需要对硬件进行操作的场合,用c语言明显优于其它高级语言,许多大型应用软件都是用c语言编写的。

2、编译就是利用编译程序从源语言编写的源程序产生目标程序的过程,其中的五个阶段分别是词法分析、语法分析、语义检查和中间代码生成、代码优化、目标代码生成。主要是进行词法分析和语法分析,又称为源程序分析,分析过程中发现有语法错误,给出提示信息。

(1)编译五个阶段涉及硬件扩展阅读

c编译程序的语言特点

对于c编译程序来说,其语言的特点如下:

1、c语言是一种结构化语言。它层次清晰,便于按模块化方式组织程序,易于调试和维护,而且表现能力和处理能力极强。

2、c语言具有丰富的运算符和数据类型,便于实现各类复杂的数据结构。它还可以直接访问内存的物理地址,进行位(bit)一级的操作。

3、由于c语言实现了对硬件的编程操作,因此集高级语言和低级语言的功能于一体。它既可用于系统软件的开发,也适合于应用软件的开发。

4、此外,c语言还具有效率高、可移植性强等特点。因此它广泛地移植到了各类各型计算机上,从而形成了多种版本。

㈡ 编译详细资料大全

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

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

基本介绍

编译程式,词法分析,语法分析,中间代码,代码最佳化,目标代码,表格管理,出错处理,

编译程式

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

词法分析

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

语法分析

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

中间代码

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

代码最佳化

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

目标代码

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

表格管理

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

出错处理

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

㈢ 什么是java代码的编译与反编译

Java代码的编译与反编译

2017-02-21Hollis数盟

一、什么是编译

1、利用编译程序从源语言编写的源程序产生目标程序的过程。

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

二、什么是反编译

计算机软件反向工程(Reverseengineering)也称为侍梁计算机软件还原工程,是指通过对他人软件的目标程序(可执行程序)进行“逆向分析、研究”工作,以推导出他人的软件产品所使用的思路、原理、结构、算法、处理过程、运行方法等设计要素,某些特定情况下可能推导出源代码。反编译作为自己开发软件时的参考,或者直接用于自己的软件产品中。

三、Java类的编译与反编译

我们在最初学习Java的时候,会接触到两个命令:javac和java,那个时候我们就知道,javac是用来编译Java类的,就是将我们写好的helloworld.java文件编译成helloworld.class文件。

class文件打破了C或者C++等语言所遵循的传统,使用这些传统语言写的程序通常首先被编译,然后被连接成单独的、专门支持特定硬件平台和操作系统的二进制文件。通常情况下,一个平台上的二进制可执行文件不能在其他平台上工作。而Javaclass文件是可以运行在任何支持Java虚拟机的硬件平台和操作系统上的二进制文件。

那么反编译呢,就是通过helloworld.class文件得到java文件(或者说是程序员能看懂的Java文件)

四、什么时候会用到反编译

1、我们只有一个类的class文件,但是我们又看不懂Java的class文件,那么我们可以把它反编译成我们可以看得懂的文件。

2、学习Java过程中,JDK的每个版本都会加入越来越多的语法糖,有些时候我们想知道Java一些实现细节,我们可以借助反编译。

五、反编译工具

1、javap

2、Jad:官网(墙裂推荐)

客户端:

可以在官网下载可执行文件,找到对应的操作系统的对应版本,然后进行安装使用。

因为我使用的是linux操作系统,所以我下载的是Linux版本的工具,这个工具下载好之后会有一个执行文件,败吵只要在执行文件所在目录执行./jadhelloworld.class就会在当前目录下生成helloworld.jad文件,该文件里就是我们很熟悉的Java代码

Eclipse插件:

下载地址在官网下载插件的jar包,然后将jar包放到eclipse的plugins目录下‘在打开Eclipse,Eclipse->Window->Preferences->Java,此时你会发现会比原来多了一个JadClipse的选项,单击,在Pathtodecompiler中输入你刚才放置jad.exe的位置,也可以制定临时文件的目录。当然在JadClipse下还有一些子选项,如Debug,Directives等,按照默认配置察谈侍即可。基本配置完毕后,我们可以查看一下class文件的默认打开方式,Eclipse->Window->Preferences->General->Editors->FileAssociations我们可以看到class文件的打开方式有两个,JadClipse和Eclipse自带的ClassFileViewer,而JadClipse是默认的。全部配置完成,下面我们可以查看源码了,选择需要查看的类,按F3即可查看源码

㈣ 编译程序的工作过程一般可以划分为哪5个基本阶段,还自始至终伴随进行哪两项工作

1、编译程序把一个源程序翻译成目标程序的工作过程分为五个阶段:词法分析;语法分析;中间代码生成;代码优化;目标代码生成。

2、编译程序的工作过程一般自始至终伴随进行信息表管理和出错处理两项工作。

主要是进行词法分析和语法分析,又称为源程序分析,分析过程中发现有语法错误,给出提示信息。

(4)编译五个阶段涉及硬件扩展阅读:

解释程序是一种语言处理程序,在词法、语法和语义分析方面与编译程序的工作原理基本相同,但在运行用户程序时,它直接执行源程序或源程序的内部形式(中间代码)。因此,解释程序并不产生目标程序,这是它和编译程序的主要区别。解释程序的工作过程如下:

1、由总控程序完成初始化工作。

2、依次从源程序中取出一条语句进行语法检查,如有错,输出错误信息;如果通过了语法检查,则根据语句翻泽成相应的指令并执行它。

3、检查源程序是否已经全部解释执行完毕,如果未完成则继续解释并执行下一条语句,直到全部语句都处理完毕。

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

【答案】:编译过程包括词法分析、语法分析、语义分析和中间代码生成、优化、目标代码生成5个阶段。
词法分析的功能是弊则对输入的高级语言源程序进行词法分析,识别其中的单词符号,确定它们的种类,交给语法分析器,即把字符串形式的源程序分解为单词符号串形式。
语法分析的功能是在词法分析结果的基础上,运用语言的语法规则,对程指或序进行语法分析,识别构成程序的各类语法范畴及它们之间的层次关系,并把这种层次关系表达成语法树的形式。
词义分析和中间代码生成的功能是在语法分析的基础上,对程序进行语义分析,“理解”其含义,产生出表达程序语义的内部表达形式(中间代码)。表达语义的中间代码与机器租逗棚代码相似,可以认为这一步进行了翻译工作,把源程序翻译成了与具体机器指令系统无关的抽象指令代码。
优化的功能是按照等价变换的原则,对语义分析器产生的中间代码序列进行等价变换,删除其中多余的操作,对耗时耗空间的代码进行优化,以期最后得到高效的可执行代码。
目标代码生成的功能是把优化后的中间代码变换成机器指令代码,得到可在目标机器上执行的机器语言程序。

㈥ 什么是编译程序

编译程序指将某一种程序设计语言写的程序翻译成等价的另一种语言的程序的程序, 称之为编译程序

编译程序也称为编译器,是指把用高级程序设计语言书写的源程序,翻译成等价的机器语言格式目标程序的翻译程序。编译程序属于采用生成性实现途径实现的翻译程序。

它以高级程序设计语言书写的源程序作为输入,而以汇编语言或机器语言表示的目标程序作为输出。编译出的目标程序通常还要经历运行阶段,以便在运行程序的支持下运行,加工初始数据,算出所需的计算结果。

编译程序的实现算法较为复杂,这是因为它所翻译的语句与目标语言的指令不是一一对应关系,而是一多对应关系,同时也因为它要处理递归调用、动态存储分配、多种数据类型,以及语句间的紧密依赖关系。

由于高级程序设计语言书写的程序具有易读、易移植和表达能力强等特点,编译程序广泛地用于翻译规模较大、复杂性较高、且需要高效运行的高级语言书写的源程序。

(6)编译五个阶段涉及硬件扩展阅读:

编译流程分为了四个步骤:

1.预处理,生成预编译文件(.文件)

2.编译,生成汇编代码(.s文件)

3.汇编,生成目标文件(.o文件)

4.链接,生成可执行文件

㈦ 编译程序的各阶段都涉及到什么

预处理,词法分析,文法分析,生成中间代码,生成目标代码。

1、预处理:导入源程序并保存(C文件)。

2、编译:将源程序转换为目标文件(Obj文件)。

3、链接:将目标文件生成为可执行文件(EXE文件)。



(7)编译五个阶段涉及硬件扩展阅读:

将C语言代码分为程序的几个阶段:

首先,源代码文件测试。以及相关的头文件,比如stdio。H、由预处理器CPP预处理为.I文件。预编译的。

编译过程是对预处理文件进行词法分析、语法分析、语义分析和优化,生成相应的汇编代码文件。这个过程往往是整个程序的核心部分。

阅读全文

与编译五个阶段涉及硬件相关的资料

热点内容
汉语词典pdf下载 浏览:351
android公网ip 浏览:611
要塞1地图放哪个文件夹 浏览:848
凡科建站怎么弄服务器 浏览:939
苹果手机怎么设置app播放 浏览:202
下载网站源码用什么浏览器 浏览:241
六线谱pdf 浏览:156
linuxmysqlsock 浏览:239
人教版数学pdf下载 浏览:460
文档安全加密系统 浏览:491
数控铣床编程简单数字 浏览:788
编程电缆如何重启 浏览:121
myqq命令行发消息 浏览:365
日产逍客怎么使用app升窗 浏览:503
安卓系统怎么快速删除微信内容 浏览:653
csharppython 浏览:409
程序员脖子按摩仪 浏览:563
小米桌面文件夹乱码怎么回事 浏览:858
点歌台app怎么连接 浏览:318
大学电脑编程学什么好 浏览:348