当前位置:首页 » 编程软件 » 更改程序连接的编译器

更改程序连接的编译器

发布时间: 2024-09-25 07:30:41

Ⅰ 什么是编辑器

编译

编译器是一种特殊的程序,它可以把以特定编程语言写成的程序变为机器可以运行的机器码。我们把一个程序写好,这时我们利用的环境是文本编辑器。这时我程序把程序称为源程序。在此以后程序员可以运行相应的编译器,通过指定需要编译的文件的名称就可以把相应的源文件(通过一个复杂的过程)转化为机器码了。

[编辑]编译器工作方法
首先编译器进行语法分析,也就是要把那些字符串分离出来。然后进行语义分析,就是把各个由语法分析分析出的语法单元的意义搞清楚。最后生成的是目标文件,我们也称为obj文件。再经过链接器的链接就可以生成最后的可执行代码了。有些时候我们需要把多个文件产生的目标文件进行链接,产生最后的代码。我们把一过程称为交叉链接。

一个现代编译器的主要工作流程如下:

* 源程序(source code)→预处理器(preprocessor)→编译器(compiler)→汇编程序(assembler)→目标程序(object code)→连接器(链接器,Linker)→可执行程序(executables)

工作原理

编译是从源代码(通常为高级语言)到能直接被计算机或虚拟机执行的目标代码(通常为低级语言或机器言)。然而,也存在从低级语言到高级语言的编译器,这类编译器中用来从由高级语言生成的低级语言代码重新生成高级语言代码的又被叫做反编译器。也有从一种高级语言生成另一种高级语言的编译器,或者生成一种需要进一步处理的的中间代码的编译器(又叫级联)。

典型的编译器输出是由包含入口点的名字和地址以及外部调用(到不在这个目标文件中的函数调用)的机器代码所组成的目标文件。一组目标文件,不必是同一编译器产生,但使用的编译器必需采用同样的输出格式,可以链接在一起并生成可以由用户直接执行的可执行程序。

编译器种类

编译器可以生成用来在与编译器本身所在的计算机和操作系统(平台)相同的环境下运行的目标代码,这种编译器又叫做“本地”编译器。另外,编译器也可以生成用来在其它平台上运行的目标代码,这种编译器又叫做交叉编译器。交叉编译器在生成新的硬件平台时非常有用。“源码到源码编译器”是指用一种高级语言作为输入,输出也是高级语言的编译器。例如: 自动并行化编译器经常采用一种高级语言作为输入,转换其中的代码,并用并行代码注释对它进行注释(如OpenMP)或者用语言构造进行注释(如FORTRAN的DOALL指令)。

预处理器(preprocessor)

作用是通过代入预定义等程序段将源程序补充完整。

编译器前端(frontend)

前端主要负责解析(parse)输入的源程序,由词法分析器和语法分析器协同工作。词法分析器负责把源程序中的‘单词’(Token)找出来,语法分析器把这些分散的单词按预先定义好的语法组装成有意义的表达式,语句 ,函数等等。 例如“a = b + c;”前端词法分析器看到的是“a, =, b , +, c;”,语法分析器按定义的语法,先把他们组装成表达式“b + c”,再组装成“a = b + c”的语句。 前端还负责语义(semantic checking)的检查,例如检测参与运算的变量是否是同一类型的,简单的错误处理。最终的结果常常是一个抽象的语法树(abstract syntax tree,或 AST),这样后端可以在此基础上进一步优化,处理。

编译器后端(backend)

编译器后端主要负责分析,优化中间代码(Intermediate representation)以及生成机器代码(Code Generation)。

一般说来所有的编译器分析,优化,变型都可以分成两大类: 函数内(intraproceral)还是函数之间(interproceral)进行。很明显,函数间的分析,优化更准确,但需要更长的时间来完成。

编译器分析(compiler analysis)的对象是前端生成并传递过来的中间代码,现代的优化型编译器(optimizing compiler)常常用好几种层次的中间代码来表示程序,高层的中间代码(high level IR)接近输入的源程序的格式,与输入语言相关(language dependent),包含更多的全局性的信息,和源程序的结构;中层的中间代码(middle level IR)与输入语言无关,低层的中间代码(Low level IR)与机器语言类似。 不同的分析,优化发生在最适合的那一层中间代码上。

常见的编译分析有函数调用树(call tree),控制流程图(Control flow graph),以及在此基础上的变量定义-使用,使用-定义链(define-use/use-define or u-d/d-u chain),变量别名分析(alias analysis),指针分析(pointer analysis),数据依赖分析(data dependence analysis)等等。

上述的程序分析结果是编译器优化(compiler optimization)和程序变形(compiler transformation)的前提条件。常见的优化和变新有:函数内嵌(inlining),无用代码删除(Dead code elimination),标准化循环结构(loop normalization),循环体展开(loop unrolling),循环体合并,分裂(loop fusion,loop fission),数组填充(array padding),等等。优化和变形的目的是减少代码的长度,提高内存(memory),缓存(cache)的使用率,减少读写磁盘,访问网络数据的频率。更高级的优化甚至可以把序列化的代码(serial code)变成并行运算,多线程的代码(parallelized,multi-threaded code)。

机器代码的生成是优化变型后的中间代码转换成机器指令的过程。现代编译器主要采用生成汇编代码(assembly code)的策略,而不直接生成二进制的目标代码(binary object code)。即使在代码生成阶段,高级编译器仍然要做很多分析,优化,变形的工作。例如如何分配寄存器(register allocatioin),如何选择合适的机器指令(instruction selection),如何合并几句代码成一句等等。

Ⅱ 什么是编译器

编译器是一种将高级编程语言代码转换为机器语言代码的软件工具。
编译器在软件开发中扮演着至关重要的角色。它们是连接人类程序员和计算机硬件的桥梁,使得程序员可以使用更易理解和编写的高级语言来编写程序,而不必直接使用复杂和低级的机器语言。编译器将高级语言代码作为输入,然后执行一系列转换步骤,最终生成可由计算机硬件执行的机器代码。
编译器的工作过程通常包括词法分析、语法分析、语义分析、优化和代码生成等阶段。在词法分析阶段,编译器将源代码分解为一系列的词法单元或标记。语法分析阶段则根据语言的语法规则将这些标记组合成表达式和语句。语义分析阶段检查源代码的语义正确性,包括类型检查和符号表解析等。优化阶段试图改进代码的性能或其他方面,而代码生成阶段则将优化后的中间代码转换为目标机器代码。
举例来说,c语言编译器如GCC(GNU Compiler Collection)可以将C语言源代码转换为可在特定硬件平台上运行的机器代码。在这个过程中,GCC会执行上述的所有编译步骤,确保生成的代码既正确又高效。编译器不仅限于像C或C++这样的静态类型语言,它们也可以用于编译动态类型语言,如JavaScript或Python,尽管这些语言的编译过程可能有所不同。

Ⅲ 常见的C语言编译器是什么

目前最流行的C语言编译器有以下几种:

1、GNU Compiler Collection 或称GCC

GCC(GNU Compiler Collection,GNU编译器套件),是由 GNU 开发的编程语言编译器。它是以GPL许可证所发行的自由软件,也是 GNU计划的关键部分。

GCC原本作为GNU操作系统的官方编译器,现已被大多数类Unix操作系统(如linux、BSD、Mac OS X等)采纳为标准的编译器,GCC同样适用于微软的Windows。GCC是自由软件过程发展中的着名例子,由自由软件基金会以GPL协议发布。

2、Microsoft C 或称 MS C

Microsoft C 是c语言的一种IDE(集成开发环境),常见的还有Microsoft Visual C++,Borland C++,Watcom C++ ,Borland C++ ,Borland C++ Builder,Borland C++ 3.1 for DOS,Watcom C++ 11.0 for DOS,GNU DJGPP C++ ,Lccwin32 C Compiler 3.1,High C,Turbo C等等......

3、Borland Turbo C 或称 Turbo C

Turbo C是美国Borland公司的产品,Borland公司是一家专门从事软件开发、研制的大公司。该公司相继推出了一套 Turbo系列软件, 如Turbo BASIC, Turbo Pascal, Turbo Prolog, 这些软件很受用户欢迎。

(3)更改程序连接的编译器扩展阅读:

C编译的整个过程很复杂,大致可以分为以下四个阶段:

1、预处理阶段在该阶段主要完成对源代码的预处理工作,主要包括对宏定义指令,头文件包含指令,预定义指令和特殊字符的处理,如对宏定义的替换以及文件头中所包含的文件中预定义代码的替换等,总之这步主要完成一些替换工作,输出是同源文件含义相同但内容不同的文件。

2、编译、优化阶段编译就是将第一阶段处理得到的文件通过词法语法分析等转换为汇编语言。优化包括对中间代码的优化,如删除公共表达式,循环优化等;和对目标代码的生成进行的优化,如如何充分利用机器的寄存器存放有关变量的值,以减少内存访问次数。

3、汇编阶段将汇编语言翻译成机器指令。

4、链接阶段链接阶段的主要工作是将有关的目标文件连接起来,即将在一个文件中引用的符号同该符号在另外一个文件中的定义连接起来,使得所有的目标文件成为一个能够被操作系统装入执行的统一整体。

Ⅳ 新手用什么c语言编译器

1、Turbo C2、0
Turbo C2、0不仅是一个快捷、高效的编译程序,同时还有一个易学、易用的集成开发环境。使用Turbo C2、0无需独立地编辑、编译和连接程序,就能建立并运行C语言程序。因为这些功能都组合在Turbo 2、0的集成开发环境内,并且可以通过一个简单的主屏幕使用这些功能。
2、Dev C++
Dev C++是一个Windows环境下C或C++的集成开发环境,它是一款自由软件,遵守GPL许可协议分发源代码。它集合了MinGW等众多自由软件,并

Ⅳ 程序语言,操作系统,编译器三者之间有何关系

程序语言,操作系统,编译器三者之间有何关系?

可以理解为程序语言需要在编译器里面进行编译,但是编辑器需要运行在操作系统里
编程语言(programming language),是用来定义计算机程序的形式语言。它是一种被标准化的交流技巧,用来向计算机发出指令。一种计算机语言让程序员能够准确地定义计算机所需要使用的数据,并精确地定义在不同情况下所应当采取的
简单讲,编译器就是将"一种语言(通常为高级语言)"翻译为"另一种语言(通常为低级语言)"的程序。一个现代编译器的主要工作流程:源代码 (source code) → 预处理器 (preprocessor) → 编译器 (piler) → 目标代码 (object code) → 链接器 (Linker) → 可执行程序 (executables)
操作系统是管理计算机硬件资源,控制其他程序运行并为用户提供交互操作界面的系统软件的集合。操作系统是计算机系统的关键组成部分,负责管理与配置内存、决定系统资源供需的优先次序、控制输入与输出设备、操作网络与管理文件系统等基本任务。操作系统的种类很多,各种设备安装的操作系统可从简单到复杂,可从手机的嵌入式操作系统到超级计算机的大型操作系统。目前流行的现代操作系统主要有Android、BSD、iOS、Linux、Mac OS X、Windows、Windows Phone和z/OS等,除了Windows和z/OS等少数操作系统,大部分操作系统都为类Unix操作系统。

操作系统和编译器的关系?

操作系统是和硬件的桥梁,所有软件如果要运行,就得在装有操作系统的机器上运行。没有安装操作系统的计算机,是不能运行其它软件的,装上了linux,你才能在它上面安装g, 你可以用g编译各种软件,比如linux版的QQ等,同样你也可以用g编译linux系统软件(因为系统软件也是软件),并把编译好的linux软件放到机器上安装。
当然也可以写个编译器在没有操作系统的机器上编译,但这个编译器就要做很多和硬件打交道的事。至少g是不行的,要运行在操作系统上的。

操作系统有哪几大特征?它们之间有何关系?

说得通俗点 就是一个操作平台 你要是用什么软件或执行什么程序 都需要建立在一个支持的平台上才好发挥出作用
之间 不知你所指是什么

家庭版 专业版 旗舰版 一个比一个功能更全面

关于编译器 操作系统 CPU

是编译器定的... 基本数据类型(VC为例)主类型分类型修饰符占用空间表示范围整形整数形 intshort2字节-32768 ~ 32767long(默认)4字节-231 ~ (231 -1)unsigned short2字节0 ~ 65535

操作系统可以编译高级语言源程序吗

首先你要搞清楚操作系统与编译器的概念,操作系统是一个软件平台,本身没有编译功能。编译器是运行于操作系统上的一个应用程序,只要有人把某种编程语言的编译器移植到这个操作系统上,那么就可以在这个操作系统上编译这种语言。
另外,不知道你说的高级语言是哪些,C++和JAVA之类的算不算?
一般来说,电脑用的操作系统上面,比如windows 和 Linux 都有多编译器,而小型的嵌入式操作系统则少有编译器可以能运行其上。

用户、计算机和程序员三者之间有何关系

用户是使用计算机的,计算机为用户提供服务,而程序员与计算机就像"朋友",可以彼此交流。实现人机对话。一一一个人解答,望采纳。

语言编译器是一种( ) A 系统软件 B 微机操作系统 C 字处理系统 D 源程序

可以先明晰下规则 答案来自hhqq005
编译器:翻译工具,把高级语言源程序翻译为汇编语言源程序,再把汇编源序翻译成目标代码供连接程序使用。
语言:一个规则。例如:C语言,它规定程序入口为main(),和其它规定。并把这些 <规定的集合> 命名为C语言。
TC:一个开发工具,它包括文本编辑器,编译器,连接程序,调试环境等等。TC中的编译器是TCC.EXE文件。
关于汇编:
汇编语言是一个规则,
汇编程序是一个翻译工具
汇编源程序是一个 符合(汇编语言)规则的程序代码
汇编是一个过程,这个过程是汇编程序 把汇编源程序 翻译 为目标代码的过程
对于高级语言:翻译的过程叫做编译,翻译工具叫做编译程序或编译器。
我觉得 这样看的话 是选择A

操作系统和语言程序的关系

操作系统是系统软件,不是编程语言。软件是由编程语言编写。常用的语言如汇编,C,C++,VC,VB,JAVA,DELPHI等。大部分应用程序都应在一定的系统平台(Windows,Unix,LInux)下工作。并不是说一定要有操作系统。否则在60-70年代计算机还有什么用。但是有了操作系统对于人们应用计算机带来了很多便利。至于说编程语言否也需要系统支持。还是那句话,在没有系统前,人们就是用汇编和C语言编写了windows系统!
当然一定的语言要有一定的编译环境,所谓编译环境就是一定的软件集成环境,如要有编辑程序,连接程序,编译程序,解释程序等!而这些程序又需要系统的支持,所以编程语言需要系统支持,只不过并非是windows系统。在这里就我个人认为,只有汇编语言例外。

工作、家庭和亲人三者之间有何关系?

家庭是一群由血缘和婚姻纽带连接起来的人。这些人生活在一个屋顶下,共同开支预算。当然这仅仅意味着理论上的概念,在现实生活中,家庭生活是与周围活跃的社会生活互相联系的,它要受当时经济、政治、文化及人们心理,信仰等变化的影响。无论在世人看来是多么独立的家庭,它实际上多多少少要反映出全部重要的社会现象,而反过来,所谓的“大世界”(即社会生活也必然要赋予家庭中人际关系所具有的特征,例如夫妻,父子关系等等)。
在社会主义所有制的影响下,随着国家对公民家庭物质福利的改善,家庭作为以父亲为首的经济生产个体的职能已经消亡,现在苏联人的家庭关系首先指的是人的关系,而不是指经济关系。苏联人普遍认为,夫妻子女间的情爱和共同利益是他们最关心的方面。
当然,迄今为止,经济在家庭生活中仍然还起着很大作用,它突出表现在家庭的物质利益和家庭成员的自助活动中。社会主义制度确保人与人之间的平等,因此其生活方式的一个重要特点就是夫妻共同管理家庭,共同分担家务劳动。随着时代的变迁,我们对于家庭与社会之间的责任和义务都有重新分配的必要。由于科技事业的发展,在很大程度上解决了苏联人民的衣、食、住、行状况,他们无需再花费更多的精力从事一些琐细的家务劳动,从而把大部份精力和时间投入从事社会性的创造活动。一般说来,家庭的建立和和睦幸福的确需要一定程度的物质条件,可这远远不是决定家庭幸福的唯一绝对因素。为了人们家庭安稳和谐,有必要首先清醒地认识幸福所包含的意义。为此,苏联社会学家V·波耶柯进行了测试,他把调查结果分为三类:
1.物质因素:一套公寓和物质福利优厚。
2.人的因素:夫妻间的相互理解,如对孩子的看法,有信心建立牢固的婚姻,共同的兴趣等。
3.其它因素:令人满意的工作,文化程度,好职位,社交范围等。
被调查的3220个列宁格勒市民中,有一半的人认为家庭幸福首先取决于夫妻间的理解,然后才谈得上其它因素。这次调查结果与苏联社会学家Z·杨柯夫1978——1979年与苏联《劳动妇女》杂志编辑部所做的调查一样,不论男女公民,在确定自己的家庭关系时都首先考虑相互的理解和体贴,双方互相尊重,第二是要能共同承担养育子女的义务,但是,由于男女生理,心理特征的差异,使女性比男性更为强调理解和信任的重要性,至于家庭之外的其它因素,男女均认为有一个满意的工作是必要的前题,女性侧重双方共度余暇,积极参加旅游,社交是巩固婚姻纽带有效的办法;男性更为珍视自我意识,行动自由和在社会上的个人名望及地位。
摘自网络
这样,由于男女愿望的差异和家务劳动,家庭生活所形成的独特性,就使得家庭成员之间必须了解自己在家庭生活中应该扮演的角色,及所需承担的义务。而家庭成员怎样成功地处理好家务琐事,家庭关系又反映出其所处社会的成熟和完善程度。社会学家认为:一个完美幸福的家庭,既要满足其成员间婚姻和伴侣的本能的原始要求,又要使他们在自己子女身上体现出父爱或母爱,而与此同时通过大量日常共同的家务琐事渐渐获得正确处理夫妻关系的经验,从而去理解家庭幸福和爱情的更深的层次。
一对和睦相爱的夫妇所关心的不仅仅是自己,而是对方的需要,这样又提高了自己在爱人眼里的价值,取得了他或她的尊敬。跟潘约诺夫夫妇一样,成千上万和睦的男女由于共同的生活目标,共同的企望密切地联系起来,使他们能和衷共济,屡经磨砺而不动摇婚姻家庭的基石。社会主义制度下这样珍惜爱情,互相关心,爱抚下一代的夫妻关系正是现代苏联人生活的楷模。

Ⅵ c语言编译软件有哪些

6款好用的C语言编译器推荐

一些刚开始接触C语言编译的网友想下载一款C语言编译器来使用,不过,网络上有不少C语言编译器相关的软件,让人很难抉择。那么,C语言编译器哪个好?今天的文章里,小编给大家整理了6款好用的C语言编译器推荐给大家,需要C语言编译器的网友,不妨了解一下!

一、Dev-C++

Visual Studio(VS) 是一套非常完备的工具和服务,可帮助您为 Microsoft 平台和其他平台创建各种各样的应用程序。Visual Studio 还可将您所有的项目、团队和利益干系人联系在一起。现在您的团队可以从任何位置以虚拟方式进行更为敏捷的合作,无论他们采用何种开发工具。

功能介绍

可以通过强大的集成开发环境构建面向 Windows、Android、iOS 以及 Web 的出色应用。使用任何 IDE 或编辑器在云中进行版本控制、敏捷、持续交付、应用程序分析协作。

适用于所有操作系统的编辑器使用可在 Windows、OS X 或 Linux 上运行的免费代码编辑器构建和调试现代 Web 和云应用程序。

Ⅶ 编译器由什么组成

编译器:翻译工具,把高级语言源程序翻译为汇编语言源程序,再把汇编源序翻译成目标代码供连接程序使用。
语言:一个规则。例如:C语言,它规定程序入口为main(),和其它规定。并把这些 <规定的集合> 命名为C语言。
TC:一个开发工具,它包括文本编辑器,编译器,连接程序,调试环境等等。TC中的编译器是TCC.EXE文件。

关于汇编:
汇编语言是一个规则,
汇编程序是一个翻译工具
汇编源程序是一个 符合(汇编语言)规则的程序代码
汇编是一个过程,这个过程是汇编程序 把汇编源程序 翻译 为目标代码的过程
对于高级语言:翻译的过程叫做编译,翻译工具叫做编译程序或编译器。

热点内容
javastruct 发布:2024-09-25 11:07:04 浏览:376
c语言几几开 发布:2024-09-25 10:46:07 浏览:628
技能树算法 发布:2024-09-25 10:45:12 浏览:164
pingc语言实现 发布:2024-09-25 10:45:12 浏览:897
对法的算法 发布:2024-09-25 10:14:53 浏览:802
安卓用什么下载app软件贴吧 发布:2024-09-25 10:09:52 浏览:269
linux开放端口是否开放 发布:2024-09-25 10:05:20 浏览:567
vb打开access数据库 发布:2024-09-25 10:01:01 浏览:739
啊哈java 发布:2024-09-25 09:49:26 浏览:68
为什么自己开的服务器总是没有人来 发布:2024-09-25 09:28:37 浏览:555