Gcc

#编程软件# 0 0
Gcc(GNU Compiler Collection,GNU编译器套件)是由GNU开发的编程语言编译器,包括了C、C++、Objective-C、Fortran、Java、Ada和Go语言前端,也包括了这些语言的库(如libstdc++,libgcj等)。GCC的初衷是为GNU操作系统专门编写一款编译器,现已被大多数类Unix操作系统(如Linux、BSD、Mac OS X等)采纳为标准的编译器,甚至在微软的Windows上也可以使用GCC。
  • 外文名称: GNU Compiler Collection
详细介绍 PROFILE +

基本介绍

GCC(GNU Compiler Collection,GNU编译器套件)是由GNU开发的编程语言译器。GNU编译器套件包括C、C++、Objective-C、 Fortran、Java、Ada和Go语言前端,也包括了这些语言的库(如libstdc++,libgcj等。)

GCC的初衷是为GNU操作系统专门编写的一款编译器。GNU系统是彻底的自由软件。此处,“自由”的含义是它尊重用户的自由。

产品设计

GCC的外部接口长得像一个标准的Unix编译器。使用者在命令列下键入gcc之程序名,以及一些命令参数,以便决定每个输入档案使用的个别语言编译器,并为输出程序码使用适合此硬件平台的组合语言编译器,并且选择性地执行连接器以制造可执行的程序。

每个语言编译器都是独立程序,此程序可处理输入的原始码,并输出组合语言码。全部的语言编译器都拥有共通的中介架构:一个前端解析符合此语言的原始码,并产生一抽象语法树,以及一翻译此语法树成为GCC的暂存器转换语言〈RTL〉的后端。编译器最佳化与静态程序码解析技术(例如FORTIFY_SOURCE,一个试图发现缓冲区溢位〈buffer overflow〉的编译器)在此阶段应用于程序码上。最后,适用于此硬件架构的组合语言程序码以Jack Davidson与Chris Fraser发明的算法产出。

几乎全部的GCC都由C写成,除了Ada前端大部分以Ada写成。

前端接口

前端的功能在于产生一个可让后端处理之语法树。此语法解析器是手写之递归语法解析器。

直到2004年,程序的语法树结构尚无法与欲产出的处理器架构脱钩。而语法树的规则有时在不同的语言前端也不一样,有些前端会提供它们特别的语法树规则。

在2005年,两种与语言脱钩的新型态语法树纳入GCC中。它们称为GENERIC与GIMPLE。语法解析变成产生与语言相关的暂时语法树,再将它们转成GENERIC。之后再使用"gimplifier"技术降低GENERIC的复杂结构,成为一较简单的静态唯一形式(Static Single Assignment form,SSA)基础的GIMPLE形式。此形式是一个与语言和处理器架构脱钩的全域最佳化通用语言,适用于大多数的现代编程语言。

中介接口

一般编译器作者会将语法树的最佳化放在前端,但其实此步骤并不看语言的种类而有不同,且不需要用到语法解析器。因此GCC作者们将此步骤归入通称为中介阶段的部分里。此类的最佳化包括消解死码、消解重复运算与全域数值重编码等。许多最佳化技巧也正在实作中。

后端接口

GCC后端的行为因不同的前处理器宏和特定架构的功能而不同,例如不同的字符尺寸、呼叫方式与大小尾序等。后端接口的前半部利用这些讯息决定其RTL的生成形式,因此虽然GCC的RTL理论上不受处理器影响,但在此阶段其抽象指令已被转换成目标架构的格式。

GCC的最佳化技巧依其释出版本而有很大不同,但都包含了标准的最佳化算法,例如循环最佳化、执行绪跳跃、共通程序子句消减、指令排程等等。而RTL的最佳化由于可用的情形较少,且缺乏较高阶的资讯,因此相比较起来,增加的GIMPLE语法树形式,便显得比较不重要。

后端经由一次重读取步骤后,利用描述目标处理器的指令集时所取得的信息,将抽象暂存器替换成处理器的真实暂存器。此阶段非常复杂,因为它必须关注所有GCC可移植平台的处理器指令集的规格与技术细节。

后端的最后步骤相当公式化,仅仅将前一阶段得到的汇编语言代码藉由简单的子例程转换其暂存器与内存位置成相对应的机器码。

特色功能

以2006年5月24日释出的4.1.1版为准,本编译器版本可处理下列语言:

Ada〈GNAT〉

C〈GCC〉

C++(G++)

Fortran〈Fortran77:G77,Fortran90:GFORTRAN〉

Java〈编译器:GCJ;解释器:GIJ〉

Objective-C〈GOBJC〉

Objective-C++

先前版本纳入的CHILL前端由于缺乏维护而被废弃。

Fortran前端在4.0版之前是G77,此前端仅支援Fortran77。在本版本中,G77被废弃而采用更新的GFortran,因为此前端支援Fortran95。

下列前端依然存在:

Modula-2

Modula-3

Pascal

PL/I

D语言

Mercury

VHDL

本百科词条由网站注册用户【 CN100941 】编辑上传提供,当前页面所展示的词条介绍涉及宣传内容属于注册用户个人编辑行为,网站不完全保证内容信息的准确性、真实性,也不代表本站立场。 版权声明 反馈 我要认领
词条所在榜单
相关知识文章
十大编程软件排行榜 编程开发工具大全 c语言编程软件有哪些
世界上主流的编程语言有C、Java、Python、C++、C#、Visual Basic、PHP等,针对这些编程语言,又有相对应的Visual C++、Visual Studio、Eclipse、Dev-C++、Notepad++、MyEclipse、JDK、Code::Blocks、Gcc、Sublime Text、IntelliJ IDEA、Ultraedit、C-Free等编程软件,被广泛运用,下面跟随maigoo网编辑一起了解下这些编程工具!
plc编程十大常用软件 plc编程软件哪个好 主流plc编程软件
‌PLC编程软件是用来编写、调试和修改可编程逻辑控制器(PLC)程序的工具,可以帮助工程师高效率地进行自动化控制系统的开发。你知道市面上主流plc编程软件有哪些吗?本篇文章Maigoo小编将带大家看看plc编程软件哪个好用,例如STEP 7(TIA Portal)、RSLogix 5000、EcoStruxure Control Expert、GX Works3等都较具代表性,一起来了解下吧!
数控编程十大常用软件 数控编程用什么软件 数控自动编程软件推荐
一款好用的数控加工编程软件,可以有效提升我们的工作效率。那么,你知道市面上数控编程软件有哪些吗?本文中maigoo小编盘点了十大数控自动编程软件,包括Cimatron、PowerMill、UG编程,以及Mastercam、Caxa、Creo、HyperMILL、Catia、EdgeCAM等。这些软件各有特点,已被广泛使用。一起来详细了解下。
十大java编程软件 java开发软件有哪些 学java必备工具推荐
java是全球范围内流行的编程语言,广泛应用于网站后台和安卓应用开发。那么你知道java编程软件有哪些吗?本篇文章Maigoo小编为大家整理了一批时下热门的JAVA开发工具,包括Eclipse、IntelliJ IDEA、NetBeans、JDeveloper、JCreator、MyEclipse、JDK、JBuilder、Junit等。你对这些java开发软件了解多少?一起来认识下吧!
十大好用的单片机编程软件推荐 单片机开发编程用什么软件好
单片机编程是嵌入式编程的一种,主要是在单片机这种集成电路芯片上编写和运行程序,进而达到控制硬件设备的目的。那么你知道市面上好用的单片机编程软件有哪些吗?本篇文章Maigoo小编整理了一批单片机开发常用软件,包括IAR Embedded Workbench、Keil MDK、STM32CubeIDE、Arduino IDE、MPLAB X IDE等,一起来看看吧!
十大跑分软件排行 电脑跑分软件哪个好 靠谱的电脑检测软件推荐
电脑跑分,即是利用软件对电脑硬件进行性能测试,分数越高,在一定程度上代表着性能越强。如今电脑配置各不相同,要想更准确的测试出性能如何,得先知道跑分软件哪个好,接下来请跟随maigoo小编一起看看3D Mark、鲁大师、AIDA64、PCMark、FurMark、GPU-Z、CPU-Z、象棋、GeekBench等电脑跑分软件!
十大看图软件 看图软件排行榜 看图软件哪个好用
看图软件什么最好?一款看图软件的实用性如何,得看它的图片打开速度、功能数量、支持格式;现在看图软件越来越多,但实际体验差异明显;MAIGOO网编辑就此,为大家筛选了一批好用的看图软件,其中有ACDSee、2345看图王、美图看看、Honeyview、Google Picasa、XNview、ImageGlass、光影看图、Irfanview等,你用过多少?
十大好用的手机克隆APP 一键换机助手排名 手机搬家软件哪个好
手机克隆是非常实用的一种手机数据搬家软件,能够将联系人、短信等个人信息,以及照片、音乐、视频等重要数据从旧手机一键导入新手机中。那么手机搬家软件哪个好用?一键换机软件有哪些?下面,买购小编为大家分享十大好用的手机克隆APP,包括华为手机克隆、欢太手机搬家、VIVO互传、小米换机、荣耀换机克隆等等,一起来了解一下吧。
十大动画制作软件 动漫制作软件盘点 自己做动画的软件有哪些
动画制作分为二维动画与三维动画技术,涉及软件主要分为2D和3D二种类型。在动画行业中制作动画的软件种类越来越多,越来越丰富,你知道哪个动画制作软件比较好用?画动漫软件哪个好?下面MAIGOO小编就为大家介绍十大最好用动画制作软件,分别有Maya、Adobe Animate、3DS Max、AE、C4D、Blender、万彩动画大师、Houdini、TVP、Anime Studio Pro。
七大分屏软件推荐 手机同屏多窗口软件 手机分屏软件哪个好
机分屏软件既能发挥大屏幕的多视角操作优势,又能免去后台应用来回切换的繁琐,一边打游戏一边聊天,足以让效率翻倍;maigoo编辑针对手机分屏技术,盘点了VMOS、多任务分屏、SkyOlin Helper、多屏任务插件、牛轧糖平行窗口、XHFW3、XMultiWindow等安卓分屏软件,一起来看看这些分屏软件的分屏效果如何!
九大刷机软件排行 手机刷机软件哪种好 安卓刷机软件哪个好
刷机分为卡刷和线刷,通过一定的技术手段,为手机重新写入系统;对许多刷机者而言,刷机就是玩机,享受不一样的使用体验,那么市场上的刷机软件哪种好?免费刷机软件有哪些?MAIgoo小编为大家筛选了一批手机刷机软件,其中有奇兔刷机、刷机大师、甜椒刷机助手、卓大师刷机专家、线刷宝、爱思助手、兔兔助手等!
十大建模软件排行榜 3d建模软件有哪些 3d制图软件哪个好
3d建模软件颠覆了传统的2D模式,在游戏、影视、建筑/室内设计、VR/AR、电商、工业设计、军工设计等多个重要领域有着广泛应用,并在一定程度上改变着行业的发展格局,那么在这种大环境下,相关从业者和爱好者有哪些3D制图软件可以使用?3DS MAX、Maya、Rhino、Blender、ZBrush、SketchUp等建模软件效果如何?下面跟随maigoo编辑来看看!
十大画图软件排行 绘图软件都有哪些 画画软件用什么好
近些年,我国绘图软件行业的自主软件品种不断增多,质量不断提升,于2019年达到2250亿元的市场规模,然而面对如今各行各业的需求,国产画图工具能否满足要求呢?国内外哪种制图软件最好用呢?下面跟随MAIgoo编辑一起了解下Photoshop、Illustrator、CorelDRAW、SAI、Visio、Origin、Painter、AutoCAD等热门画图软件!
十大好用的手机测速软件 wifi测速app哪个好 最准的测网速软件
手机测速软件可以帮助你了解当下的网络环境,同时也在一定程度上,体现了一款的手机的网络性能。那么,你知道手机测速用什么软件好吗?本文中,买购网编辑就带大家了解下Speedtest、花瓣测速、测网速UUSpeed,以及全球网测、网络万用表、安兔兔评测、泰尔网测等测速app。下面一起来看看。
十大好用的电脑清理软件 磁盘清理软件哪个好 电脑垃圾清理软件推荐
在这个信息化时代,电脑已成为人们工作和生活的必备工具。然而软件越来越臃肿,电脑的内存空间也一次次告急。为了保持较好的使用体验,学会使用电脑垃圾清理软件是非常有必要的。那么,你知道现在市面上电脑清理软件哪个好用吗,下面跟随买购小编来了解下CCleaner、WizTree、Glary Utilities、360清理大师-Win10等应用。
十大专业显卡测试软件 显卡测试工具哪个好 显卡性能测试软件推荐
显卡是电脑上最重要的配置之一,其性能强弱影响着电脑综合性能的表现。本文中,买购网编辑就带大家看看日常测试显卡用什么软件。现阶段使用较为广泛的有3D Mark、Unigine Superposition、Furmark,以及GPU-Z、Heaven Benchmark、Geekbench 6、Fraps等。这些显卡测试工具你都用过吗?下面一起来了解下。
十大好用的硬盘分区工具 硬盘分区软件哪个好 磁盘分区软件推荐
硬盘分区软件的作用,就是帮助我们划分硬盘的储存空间,以方便我们管理不同的文件、软件和其它数据。本文中,买购小编就带大家看看硬盘分区软件哪个好,例如傲梅分区助手、DiskGenius、MiniTool分区向导,以及Partition Magic、易我分区大师等电脑硬盘分区工具,都具有一定代表性。下面一起来了解下。
十大手机识图软件排行 拍照识图app哪个好用 识图搜图软件推荐
拍照识图软件可以帮助人们快速了解生活中的事物,例如查询植物、商品等;也可以帮助人们找到更高质量的同款图片。本文中MaiGoo小编将和大家看一份手机识图软件名单,其中有形色、百度App、Google Lens,以及万能识图、搜图神器、慧眼识图、搜狗识图等。下面一起来了解下这些识图app和网站。
十大数据分析必备软件 数据分析工具排名 好用的大数据分析软件
数据,可以帮助人们更好地理解事物本质,指导人们的决策。各行各业的发展,都需要大量数据的支撑。本文中,maiGOO小编就和大家一起看看数据分析工具软件有哪些,例如Power BI、Statistics Analysis System、Tableau,以及Mongo DB、Zoho Analytics等,都是较具代表性的大数据分析软件。这些软件你用过哪些,一起了解下。
十大好用的虚拟光驱软件 虚拟光驱工具有哪些 虚拟光驱软件推荐
虚拟光驱软件的作用,就是在电脑上模拟出一个光驱。这个光驱不能直接读取实体光盘,而是通过加载存放在硬盘里的光盘镜像文件来读取信息。本文中,买购小编将带领大家看看虚拟光驱工具有哪些、虚拟光驱软件哪个好,例如DAEMON Tools、Alcohol 120%、UltraISO软碟通、gBurner Virtual Drive等,都较具代表性,一起来了解下。