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

本百科词条由网站注册用户【 我心明亮 】编辑上传提供,当前页面所展示的词条介绍涉及宣传内容属于注册用户个人编辑行为,网站不完全保证内容信息的准确性、真实性,也不代表本站立场。 版权声明 反馈 我要认领
词条所在榜单
您还未登录,依《网络安全法》相关要求,请您登录账户后再提交发布信息。点击登录>>如您还未注册,可点击注册>>,感谢您的理解及支持!
最新评论
暂无评论
相关知识文章
十大编程软件排行榜 编程开发工具大全 c语言编程软件有哪些
世界上主流的编程语言有C、Java、Python、C++、C#、Visual Basic、PHP等,针对这些编程语言,又有相对应的Visua...
MAIGOO原创 办公软件 工具软件 软件
18万+
数控编程十大常用软件 数控编程用什么软件 数控自动编程软件推荐
一款好用的数控加工编程软件,可以有效提升我们的工作效率。那么,你知道市面上数控编程软件有哪些吗?本文中maigoo小编盘点了十大数控自动编程...
MAIGOO原创 工具软件 编程软件 软件
380
十大跑分软件排行 电脑跑分软件哪个好 靠谱的电脑跑分软件推荐
电脑跑分,即是利用软件对电脑硬件进行性能测试,分数越高,在一定程度上代表着性能越强。如今电脑配置各不相同,要想更准确的测试出性能如何,得先知...
MAIGOO原创 工具软件 软件 手机app
19万+
九大刷机软件排行 手机刷机软件哪种好 安卓刷机软件哪个好
刷机分为卡刷和线刷,通过一定的技术手段,为手机重新写入系统;对许多刷机者而言,刷机就是玩机,享受不一样的使用体验,那么市场上的刷机软件哪种好...
MAIGOO原创 工具软件 软件 科技/发明
4万+
十大动画制作软件 动漫制作软件盘点 自己做动画的软件有哪些
动画制作分为二维动画与三维动画技术,涉及软件主要分为2D和3D二种类型。在动画行业中制作动画的软件种类越来越多,越来越丰富,你知道哪个动画制...
MAIGOO原创 软件 工具软件 动画
15万+
十大好用的硬盘分区工具 硬盘分区软件哪个好 免费的磁盘分区软件
硬盘分区软件的作用,就是帮助我们划分硬盘的储存空间,以方便我们管理不同的文件、软件和其它数据。本文中,买购小编就带大家看看免费或付费的硬盘分...
MAIGOO原创 工具软件 硬盘 软件
2.7万+
七大分屏软件推荐 手机同屏多窗口软件 手机分屏软件哪个好
机分屏软件既能发挥大屏幕的多视角操作优势,又能免去后台应用来回切换的繁琐,一边打游戏一边聊天,足以让效率翻倍;maigoo编辑针对手机分屏技...
MAIGOO原创 手机app 工具软件 软件
12万+
十大音频剪辑软件 音频编辑软件有哪些 音乐剪辑软件哪个好用
对创作者而言,声音承载着一件作品的灵魂,它传递着一种情绪或意境;然而一段优质音频的诞生,离不开一个好用的音频剪辑软件;本文中,maigoo网...
MAIGOO原创 工具软件 软件 科技/发明
3.5万+
十大好用的电脑清理软件 磁盘清理软件哪个好 电脑垃圾清理软件推荐
在这个信息化时代,电脑已成为人们工作和生活的必备工具。然而软件越来越臃肿,电脑的内存空间也一次次告急。为了保持较好的使用体验,学会使用电脑垃...
MAIGOO原创 工具软件 电脑 软件
2.8万+
十大建模软件排行榜 3d建模软件有哪些 3d制图软件哪个好
3d建模软件颠覆了传统的2D模式,在游戏、影视、建筑/室内设计、VR/AR、电商、工业设计、军工设计等多个重要领域有着广泛应用,并在一定程度...
MAIGOO原创 办公软件 工具软件 软件
10万+
十大看图软件 看图软件排行榜 看图软件哪个好用
看图软件什么最好?一款看图软件的实用性如何,得看它的图片打开速度、功能数量、支持格式;现在看图软件越来越多,但实际体验差异明显;MAIGOO...
MAIGOO原创 工具软件 软件 科技/发明
23万+
十大好用的手机测速软件 wifi测速app哪个好 最准的测网速软件
手机测速软件可以帮助你了解当下的网络环境,同时也在一定程度上,体现了一款的手机的网络性能。那么,你知道手机测速用什么软件好吗?本文中,买购网...
MAIGOO原创 手机app 工具软件 在线音乐
1.2万+
十大视频剪辑软件 视频编辑软件app排名 剪辑视频的软件哪个好
我国在市场上监测到的移动应用数量于2018年达到452万个,2019年降至367万个;各类软件虽多如牛毛,但选择一款实用的视频剪辑软件,却如...
十大数据分析必备软件 数据分析工具排名 好用的大数据分析软件
数据,可以帮助人们更好地理解事物本质,指导人们的决策。各行各业的发展,都需要大量数据的支撑。本文中,maiGOO小编就和大家一起看看数据分析...
MAIGOO原创 手机app 工具软件 软件
8023
十大好用的虚拟光驱软件 虚拟光驱工具有哪些 免费的虚拟光驱软件
虚拟光驱软件的作用,就是在电脑上模拟出一个光驱。这个光驱不能直接读取实体光盘,而是通过加载存放在硬盘里的光盘镜像文件来读取信息。本文中,买购...
MAIGOO原创 工具软件 光驱 软件
1万+
十大录屏软件 录屏软件哪个好 屏幕录制软件哪个好用
随着电脑录屏需求的急剧增长,win10系统的基本普及,电脑基于xbox自带的录屏功能,解决了越来越多人的需求;然而除了这项自带应用外,第三方...
MAIGOO原创 办公软件 录屏软件 工具软件
18万+
十大画图软件排行 绘图软件都有哪些 画画软件用什么好
近些年,我国绘图软件行业的自主软件品种不断增多,质量不断提升,于2019年达到2250亿元的市场规模,然而面对如今各行各业的需求,国产画图工...
MAIGOO原创 工具软件 软件 科技/发明
7.3万+
十大好用的手机克隆APP 一键换机助手排名 手机搬家软件哪个好
手机克隆是非常实用的一种手机数据搬家软件,能够将联系人、短信等个人信息,以及照片、音乐、视频等重要数据从旧手机一键导入新手机中。那么手机搬家...
MAIGOO原创 手机克隆 工具软件 软件
7791
十大专业显卡测试软件 显卡测试工具哪个好 显卡性能测试软件推荐
显卡是电脑上最重要的配置之一,其性能强弱影响着电脑综合性能的表现。本文中,买购网编辑就带大家看看日常测试显卡用什么软件。现阶段使用较为广泛的...
MAIGOO原创 工具软件 软件 科技/发明
1.7万+
十大手机识图软件排行 拍照识图app哪个好用 免费识图搜图软件推荐
拍照识图软件可以帮助人们快速了解生活中的事物,例如查询植物、商品等;也可以帮助人们找到更高质量的同款图片。本文中MaiGoo小编将和大家看一...
MAIGOO原创 工具软件 手机app 在线音乐
7733