芒果视频下载

網站分類(lei)
登錄 |    
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
本百科詞條由網站注冊用戶"我心明亮"編輯上傳提供,詞條屬于開放詞條,當前頁面所展示的百科詞條介紹涉及宣傳內容屬于注冊用戶個人編輯行為。與Gcc的所屬企業/主題/所有人主體無關,詞條主體可以提供資料認證申請管理本詞條權限免費更新資料,也可以因內容與實際情況不符快速在線向網站提出反饋修改! 反饋
詳細介紹 PROFILE +

基本介紹

GCC(GNU Compiler Collection,GNU編譯(yi)器套(tao)件)是由GNU開發的(de)編程語(yu)言(yan)譯(yi)器。GNU編譯(yi)器套(tao)件包括(kuo)C、C++、Objective-C、 Fortran、Java、Ada和Go語(yu)言(yan)前端,也包括(kuo)了這些語(yu)言(yan)的(de)庫(如libstdc++,libgcj等(deng)。)

GCC的(de)初(chu)衷是為(wei)GNU操作系統專門編(bian)寫的(de)一(yi)款編(bian)譯器。GNU系統是徹底的(de)自(zi)由軟件。此處(chu),“自(zi)由”的(de)含義是它尊重用戶的(de)自(zi)由。

產品設計

GCC的外部接口長得像一個標準的Unix編譯(yi)(yi)器。使用者在命(ming)(ming)令(ling)列下鍵入gcc之程序名,以(yi)(yi)(yi)及一些命(ming)(ming)令(ling)參數(shu),以(yi)(yi)(yi)便決(jue)定每個輸入檔案使用的個別語言編譯(yi)(yi)器,并為輸出程序碼(ma)使用適合此硬(ying)件平臺(tai)的組合語言編譯(yi)(yi)器,并且選擇性地(di)執(zhi)行(xing)連(lian)接器以(yi)(yi)(yi)制造可執(zhi)行(xing)的程序。

每(mei)個語(yu)(yu)(yu)言(yan)(yan)編(bian)(bian)譯(yi)(yi)器(qi)都是獨(du)立程(cheng)序,此(ci)(ci)程(cheng)序可處理輸入(ru)的(de)(de)原始碼(ma),并(bing)輸出(chu)組合語(yu)(yu)(yu)言(yan)(yan)碼(ma)。全部的(de)(de)語(yu)(yu)(yu)言(yan)(yan)編(bian)(bian)譯(yi)(yi)器(qi)都擁(yong)有共(gong)通的(de)(de)中介架構:一個前端解析符合此(ci)(ci)語(yu)(yu)(yu)言(yan)(yan)的(de)(de)原始碼(ma),并(bing)產生一抽象語(yu)(yu)(yu)法(fa)樹,以及(ji)一翻譯(yi)(yi)此(ci)(ci)語(yu)(yu)(yu)法(fa)樹成為(wei)GCC的(de)(de)暫存器(qi)轉換語(yu)(yu)(yu)言(yan)(yan)〈RTL〉的(de)(de)后端。編(bian)(bian)譯(yi)(yi)器(qi)最(zui)佳化與(yu)靜(jing)態程(cheng)序碼(ma)解析技術(例如FORTIFY_SOURCE,一個試(shi)圖發(fa)現(xian)緩沖(chong)區(qu)溢位〈buffer overflow〉的(de)(de)編(bian)(bian)譯(yi)(yi)器(qi))在(zai)此(ci)(ci)階段應用于程(cheng)序碼(ma)上。最(zui)后,適用于此(ci)(ci)硬(ying)件架構的(de)(de)組合語(yu)(yu)(yu)言(yan)(yan)程(cheng)序碼(ma)以Jack Davidson與(yu)Chris Fraser發(fa)明(ming)的(de)(de)算法(fa)產出(chu)。

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

前端接口

前端的功能在于(yu)產生一個(ge)可讓后端處理(li)之語法樹。此語法解析器是(shi)手(shou)寫之遞歸語法解析器。

直到2004年,程序的(de)語(yu)(yu)法樹結構尚無法與欲產出的(de)處理(li)器(qi)架(jia)構脫(tuo)鉤。而(er)語(yu)(yu)法樹的(de)規則有時在不同的(de)語(yu)(yu)言前(qian)端(duan)(duan)也不一樣(yang),有些前(qian)端(duan)(duan)會(hui)提(ti)供它們特別的(de)語(yu)(yu)法樹規則。

在2005年(nian),兩種與(yu)語(yu)(yu)言脫鉤的新型(xing)態(tai)語(yu)(yu)法樹納入(ru)GCC中。它(ta)們稱為GENERIC與(yu)GIMPLE。語(yu)(yu)法解析(xi)變成(cheng)產(chan)生(sheng)與(yu)語(yu)(yu)言相關(guan)的暫時語(yu)(yu)法樹,再將(jiang)它(ta)們轉成(cheng)GENERIC。之(zhi)后再使用"gimplifier"技(ji)術降低GENERIC的復雜結構,成(cheng)為一較簡單的靜態(tai)唯一形式(Static Single Assignment form,SSA)基礎的GIMPLE形式。此形式是一個(ge)與(yu)語(yu)(yu)言和(he)處理(li)器架構脫鉤的全域最(zui)佳化通用語(yu)(yu)言,適用于大多數(shu)的現代編程語(yu)(yu)言。

中介接口

一般(ban)編(bian)(bian)譯器(qi)作(zuo)(zuo)者(zhe)會將(jiang)語法(fa)樹的(de)(de)最佳(jia)化(hua)放在(zai)前端(duan),但其實此步驟(zou)并不(bu)看語言的(de)(de)種類(lei)而有(you)不(bu)同,且不(bu)需要用到語法(fa)解析器(qi)。因(yin)此GCC作(zuo)(zuo)者(zhe)們將(jiang)此步驟(zou)歸入通(tong)稱(cheng)為中介(jie)階(jie)段(duan)的(de)(de)部分里。此類(lei)的(de)(de)最佳(jia)化(hua)包括(kuo)消解死碼(ma)、消解重(zhong)復運(yun)算與全域數值重(zhong)編(bian)(bian)碼(ma)等。許多最佳(jia)化(hua)技巧也正在(zai)實作(zuo)(zuo)中。

后端接口

GCC后端的(de)(de)行(xing)為因(yin)不(bu)同的(de)(de)前(qian)處(chu)理器宏和(he)特定架(jia)構的(de)(de)功能而不(bu)同,例如不(bu)同的(de)(de)字符尺寸、呼叫方式與大小尾序等。后端接口的(de)(de)前(qian)半部(bu)利用這些訊息決定其(qi)RTL的(de)(de)生成形式,因(yin)此雖然GCC的(de)(de)RTL理論上不(bu)受(shou)處(chu)理器影響(xiang),但在此階段其(qi)抽(chou)象(xiang)指(zhi)令已被轉換成目標架(jia)構的(de)(de)格式。

GCC的(de)(de)最(zui)佳(jia)(jia)化(hua)(hua)(hua)(hua)技(ji)巧依其(qi)釋出(chu)版本(ben)而有很大不(bu)同,但都包(bao)含了標準(zhun)的(de)(de)最(zui)佳(jia)(jia)化(hua)(hua)(hua)(hua)算法,例如循環最(zui)佳(jia)(jia)化(hua)(hua)(hua)(hua)、執(zhi)行緒跳躍、共通程序(xu)子(zi)句消(xiao)減、指令排程等等。而RTL的(de)(de)最(zui)佳(jia)(jia)化(hua)(hua)(hua)(hua)由(you)于可用的(de)(de)情形(xing)較(jiao)少,且缺(que)乏較(jiao)高階的(de)(de)資訊,因此相(xiang)比(bi)較(jiao)起來,增加(jia)的(de)(de)GIMPLE語法樹形(xing)式(shi),便顯(xian)得比(bi)較(jiao)不(bu)重要。

后端經由(you)一次重(zhong)讀取(qu)步驟后,利用(yong)描述目標(biao)處(chu)(chu)理(li)器的指(zhi)令(ling)集時所取(qu)得的信息,將抽象暫存(cun)器替換成處(chu)(chu)理(li)器的真實暫存(cun)器。此(ci)階段(duan)非常復雜,因為它必(bi)須(xu)關注所有GCC可移植平臺的處(chu)(chu)理(li)器指(zhi)令(ling)集的規格與技術細節。

后端(duan)的(de)(de)最后步驟相當公式化,僅僅將前一階段得到(dao)的(de)(de)匯編(bian)語言代碼(ma)藉由簡單(dan)的(de)(de)子例程轉換其暫存(cun)器與內存(cun)位置成相對應(ying)的(de)(de)機器碼(ma)。

特色功能

以2006年5月24日(ri)釋出的4.1.1版(ban)為準,本編譯器版(ban)本可處理(li)下(xia)列(lie)語(yu)言:

Ada〈GNAT〉

C〈GCC〉

C++(G++)

Fortran〈Fortran77:G77,Fortran90:GFORTRAN〉

Java〈編譯器:GCJ;解釋(shi)器:GIJ〉

Objective-C〈GOBJC〉

Objective-C++

先前版本納入的CHILL前端(duan)由于缺乏維護而(er)被(bei)廢棄。

Fortran前端在4.0版之前是G77,此前端僅支(zhi)援Fortran77。在本(ben)版本(ben)中,G77被廢棄而采用更新的GFortran,因為此前端支(zhi)援Fortran95。

下(xia)列前端(duan)依然存在:

Modula-2

Modula-3

Pascal

PL/I

D語言

Mercury

VHDL

相關內容推薦
發表評論
您還未登錄,依《網絡安全法》相關要求,請您登錄賬戶后再提交發布信息。點擊登錄>>如您還未注冊,可,感謝您的理解及支持!
最新(xin)評論
暫無評論
網站提醒和聲明
本站(zhan)為注冊(ce)用(yong)(yong)(yong)戶(hu)提(ti)供(gong)信息存儲空間服務(wu),非“MAIGOO編(bian)輯上傳提(ti)供(gong)”的文(wen)章/文(wen)字均是注冊(ce)用(yong)(yong)(yong)戶(hu)自主發布上傳,不代表本站(zhan)觀點,更不表示本站(zhan)支持購買和交易,本站(zhan)對(dui)網頁中內容(rong)的合(he)法性、準確(que)性、真實(shi)性、適(shi)用(yong)(yong)(yong)性、安全性等概不負責。版權歸原作者(zhe)所有,如有侵權、虛假信息、錯(cuo)誤(wu)信息或任何問題,請及時聯系我(wo)們,我(wo)們將在第一時間刪除(chu)或更正。 申請刪除>> 糾錯>> 投訴侵權>>
提交(jiao)說明: 查看提交幫助>> 注冊登錄>>
頁面相關分類
熱門模塊
已有3846097個品牌入駐 更新518570個招商信息 已發布1584923個代理需求 已有1343123條品牌點贊