好文档就是一把金锄头!
欢迎来到金锄头文库![会员中心]
电子文档交易市场
安卓APP | ios版本
电子文档交易市场
安卓APP | ios版本

GCCGNU编译器集合.doc

3页
  • 卖家[上传人]:夏**
  • 文档编号:426573981
  • 上传时间:2023-05-24
  • 文档格式:DOC
  • 文档大小:120.50KB
  • / 3 举报 版权申诉 马上下载
  • 文本预览
  • 下载提示
  • 常见问题
    • GCCGCCIGNUCompilerCollection,GNU编译器套装),是一套由GNU开发的编程语言编译器它是一套以GNU编译器套装GPL及LGPL许可证所发行的自由软件,也是GNU计划的关键部分,亦是自由的类Unix及苹果电脑Mac开发者TheGNUProjectOSX操作系统的标准编译器GCC(特别是其中的稳定版本4.5.2/2010年12月16日;21天前C语言编译器)也常被认为是跨平台编译器的事实操作系统跨平台标准GCC原名为GNUC语言编译器(GNUCCompiler),类型编译器因为它原本只能处理C语言GCC很快地扩展,变许可协议GPL得可处理C++之后也变得可处理Fortran、Pascal、网站gcc.gnu.orgObjective—C、Java,以及Ada与其他语言概观GCC是由理查德•马修•斯托曼在1985年开始的他首先扩增一个旧有的编译器,使它能编译C,这个编译器一开始是以Pastel语言所写的Pastel是一个不可移植的Pascal语言特殊版,这个编译器也只能编译Pastel语言为了让自由软件有一个编译器,后来此编译器由斯托曼和LenTower在1987年⑴以C语言重写⑵并成为GNU项目的编译器。

      GCC的创建者由自由软件基金会直接管理[3]在1997年,一群不满GCC缓慢且封闭的创作环境者,组织了一个名为EGCS《Experimental/EnhancedGNUEGCS比起GCC的GCC00000上GCC编译,有很大CompilerSystem》的项目,此项目汇整了数项实验性的分支进入某个GCC项目的分支中建构环境更有活力,且EGCS最终也在1999年四月成为GCC的官方版本GCC目前由世界各地不同的数个程序员小组维护它是移植到中央处理器架构以及操作系统最多的编译器由于GCC已成为GNU系统的官方编译器(包括GNU/Linux家族),它也成为编译与创建其他操作系统的主要编译器,包括BSDODDMacOSX、NeXTSTEP与BeOSGCC通常是跨平台软件的编译器首选有别于一般局限于特定系统与运行环境的编译器,都使用同一个前端处理程序,产生一样的中介码,因此此中介码在各个其他平台上使用的机会可得到正确无误的输出程序目前支持的语言2006年5月24日释出的4.1.1版为准,本编译器版本可处理下列语言:• Java□□□□:GCJ;解□□:€Objective—C(GOBJC)• Objective—C++GIJ)€Ada(GNAT)€C(GCC)€C++(G++)€Fortran(Fortran77:G77,Fortran90:GFORTRAN)先前版本纳入的CHILL前端由于缺乏维护而被废弃。

      Fortran前端在4.0版之前是G77,此前端仅支持Fortran77在本版本中,G77被废弃而采用更新的GFortran,因为此前端支持Fortran95下列前端依然存在:•Modula—2•D□言•Modula—3•Mercury•Pascal•VHDL•PL/I内嵌OpenMP支持OpenMP是一种跨语言的对称多处理器(SMP)多线程并行程序的编程工具,也非常适合当今越来越流行的单CPU多核硬件环境,因此从gcc4.2开始,OpenMP成为其内嵌支持的并行编程规范,可以直接编译内嵌OpenMP语句的C/C++/Fortran95的源代码gcc4.2之前如果想在C/C++/Fortran中嵌入OpenMP语句的话,需要额外安装库和预处理器才能识别和正确处理这些语句€gcc4.2.0开始支持€gcc4.4.0开始支持参见GNU的GOMP计划OpenMPv2.5OpenMPv2.5及v3.0支持的处理器架构€Alpha•MorphoSys家族€ARM•Motorola68000€AtmelAVR•Motorola88000€Blackfin•MIPS□□芯€H8/300•PA-RISC€IA-32Dx86□与x86-64•PDP-11€IA-64例如:Itanium•PowerPCGCC目前支持下列处理器架构(以4.1版为准):System/370,System/390SuperHHC12SPARCVAXRenesasR8CQM16CQM32C□族•A29K•Inteli960•ARC•IP2000•C4x•M32R•CRIS•68HC11•D30V•MCORE•DSP16xx•MMIX较不知名的处理器架构也在官方释出版本中支持:€FR-30€FR-V由FSF个别维护的GCC处理器架构:€MN10200€MN10300€NS32K€ROMP€Stormy16€V850€Xtensa•D10V•PDP-10•MicroBlaze•MSP430当GCC需要移植到一个新平台上,通常使用此平台固有的语言来撰写其€Z8000初始阶段。

      结构GCC的外部接口长得像一个标准的Unix编译器用户在命令行下键入以便决定每个输入文件使用的个别语言编译器,并为输出代码使用适合此硬件平台的汇编语言编译器,并且选择性地运行连接器以制造可运行的程序gcc之程序名,以及一些命令参数,每个语言编译器都是独立程序,此程序可处理输入的源代码,并输出汇编语言码全部的语言编译器都拥有共通的中介架构:一个前端解析符合此语言的源代码,并产生一抽象语法树,以及一翻译此语法树成为GCC的暂存器转换语言《RTL》的后端编译器优化与静态代码解析技术(例如FORTIFY_SOURCE[1],一个试图发现缓存溢出《编语言代码以bufferoverflow》的编译器)在此阶段应用于代码上最后,适用于此硬件架构的汇JackDavidson与ChrisFraser发明的算法产出几乎全部的GCC都由C写成,除了Ada前端大部分以Ada写成前端接口前端的功能在于产生一个可让后端处理之语法树此语法解析器是手写之递归语法解析器直到最近,程序的语法树结构尚无法与欲产出的处理器架构脱钩而语法树的规则有时在不同的语言前端也不一样,有些前端会提供它们特别的语法树规则在2005年,两种与语言脱钩的新型态语法树纳入GCC中。

      它们称为GENERIC与GIMPLE语法解析变成产生与语言相关的暂时语法树,再将它们转成GENERIC之后再使用"gimplifier"技术降低GENERIC的复杂结构,成为一较简单的静态唯一形叮StaticSingleAssignmentform,SSA)基础的GIMPLE形式此形式是一个与语言和处理器架构脱钩的全局优化通用语言,适用于大多数的现代编程语言中介接口一般编译器作者会将语法树的优化放在前端,但其实此步骤并不看语言的种类而有不同,且不需要用到语法解析器因此GCC作者们将此步骤归入通称为中介阶段的部分里此类的优化包括消解死码、消解重复运算与全局数值重编码等许多优化技巧也正在实现中后端接口GCC后端的行为因不同的前处理器宏和特定架构的功能而不同,例如不同的字符尺寸、调用方式与大小尾序等后端接口的前半部利用这些消息决定其RTL的生成形式,因此虽然GCC的RTL理论上不受处理器影响,但在此阶段其抽象指令已被转换成目标架构的格式GCC的优化技巧依其释出版本而有很大不同,但都包含了标准的优化算法,例如循环优化、运行绪跳跃、共通程序子句消减、指令调度等等而近来增加的后端经由一RTL的优化由于可用的情形较少,且缺乏较高级的信息,因此比较起[2],便显得比较不重要。

      重读取步骤后,利用描述目标处理器的指令集时所取得的信息,将抽象暂存器替换成处理器的GIMPLE语法树形式真实暂存器此阶段非常复杂,因为它必须关照所有GCC可移植平台的处理器指令集的规格与技术细节后端的最后步骤相当公式化,仅仅将前一阶段得到的汇编语言码借由简单的副函数转换其暂存器与存储器位置成相对应的机器码替GCC程序除错为GCC除错的首选工具当然是((Memoryleak)而GNU测量器(能需要用户在编译时选定测量《Valgrind,用以发现存储器泄漏gprof)可以得知程序中某些函数花费多少时间,以及其调用频率;此功profiling》选项GNU除错器其他特殊用途的除错工具是参阅GCC目前包含了BoehmGC,一个为distcc—为分布式编译所设计的软件,以C/C++所设计的垃圾回收器GCC为协同软件LLVM—低层虚拟机编译器架构MinGW—将GNU开发工具移植到Win32平台下的计划外部链接Cygwin—在WindowsODOGCCSummitGNU程序的模拟软件OpenWatcom—另一个开放原码的CodeSourcery—一个GCC顾问公司ggcc—全球化GCC项目GCC官方网站GCCForum—由Nabble维持,整理所有C++/Fortran编译器。

      GNU计划历史GNU宣言•GNU计划•自由软件基金会•自由软件历史GNU许可证GNU通用公共许可证GNU自由文档许可证• GNU宽通用公共许可证•Affero通用公共许可证•• GPLlinkingexception软件GNU(变种)•Hurd•GNOME•Bash•GCC•GNUEmacs•glibc•Coreutils•Buildsystem•GNUnet•Gnuzilla(IceCat)•Gnash•其他GNU软件其它GNU/Linux命名争议•操作系统革命•BadVista•DefectivebyDesigngcc通信讨论串,并集成入一个可搜索接口中。

      点击阅读更多内容
      关于金锄头网 - 版权申诉 - 免责声明 - 诚邀英才 - 联系我们
      手机版 | 川公网安备 51140202000112号 | 经营许可证(蜀ICP备13022795号)
      ©2008-2016 by Sichuan Goldhoe Inc. All Rights Reserved.