芒果视频下载

網(wang)站分(fen)類(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的所屬企業/主題/所有人主體無關,詞條主體可以提供資料認證申請管理本詞條權限免費更新資料,也可以因內容與實際情況不符快速在線向網站提出反饋修改! 反饋
詳(xiang)細介紹(shao) PROFILE +

基本介紹

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

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

產品設計

GCC的(de)外(wai)部接(jie)口長得像一個(ge)標準的(de)Unix編譯器(qi)。使(shi)用(yong)者(zhe)在命令(ling)列下鍵入gcc之程(cheng)序(xu)名(ming),以及一些(xie)命令(ling)參數,以便(bian)決定每個(ge)輸入檔案使(shi)用(yong)的(de)個(ge)別(bie)語(yu)言編譯器(qi),并(bing)為輸出程(cheng)序(xu)碼使(shi)用(yong)適合此硬件平臺(tai)的(de)組合語(yu)言編譯器(qi),并(bing)且選(xuan)擇性地執(zhi)(zhi)行連(lian)接(jie)器(qi)以制造可(ke)執(zhi)(zhi)行的(de)程(cheng)序(xu)。

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

幾乎(hu)全部的GCC都由(you)C寫成(cheng),除了Ada前端(duan)大部分(fen)以Ada寫成(cheng)。

前端接口

前(qian)端的功能(neng)在于產生一個可讓后端處(chu)理(li)之語法樹(shu)。此語法解(jie)析(xi)器(qi)是手寫之遞歸語法解(jie)析(xi)器(qi)。

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

在2005年,兩種與(yu)語(yu)(yu)言(yan)脫鉤的(de)(de)新型態語(yu)(yu)法樹(shu)(shu)納(na)入GCC中(zhong)。它們稱為(wei)GENERIC與(yu)GIMPLE。語(yu)(yu)法解析變成(cheng)產生與(yu)語(yu)(yu)言(yan)相關的(de)(de)暫時(shi)語(yu)(yu)法樹(shu)(shu),再將它們轉成(cheng)GENERIC。之后再使(shi)用(yong)"gimplifier"技術降(jiang)低GENERIC的(de)(de)復雜結(jie)構,成(cheng)為(wei)一(yi)較簡單的(de)(de)靜態唯(wei)一(yi)形式(Static Single Assignment form,SSA)基(ji)礎的(de)(de)GIMPLE形式。此形式是一(yi)個與(yu)語(yu)(yu)言(yan)和處理器(qi)架構脫鉤的(de)(de)全域最佳化(hua)通用(yong)語(yu)(yu)言(yan),適用(yong)于大(da)多(duo)數(shu)的(de)(de)現代編程語(yu)(yu)言(yan)。

中介接口

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

后端接口

GCC后端(duan)的行為因不(bu)同(tong)的前處理(li)器宏和特定(ding)架構的功能(neng)而不(bu)同(tong),例如(ru)不(bu)同(tong)的字(zi)符尺(chi)寸、呼叫方式與(yu)大小尾序等。后端(duan)接口的前半部利(li)用這些訊息決定(ding)其RTL的生成(cheng)形式,因此(ci)雖然GCC的RTL理(li)論上不(bu)受(shou)處理(li)器影響,但在此(ci)階段其抽象指(zhi)令(ling)已被轉換成(cheng)目標架構的格式。

GCC的(de)最(zui)佳化(hua)技巧(qiao)依其釋出版本而(er)有很大不同,但都包含(han)了(le)標準(zhun)的(de)最(zui)佳化(hua)算法,例(li)如(ru)循環最(zui)佳化(hua)、執(zhi)行緒跳躍、共通程(cheng)(cheng)序子句消減(jian)、指(zhi)令排程(cheng)(cheng)等(deng)等(deng)。而(er)RTL的(de)最(zui)佳化(hua)由于可(ke)用的(de)情形較少,且缺乏較高階的(de)資訊(xun),因(yin)此(ci)相(xiang)比較起來,增加的(de)GIMPLE語法樹形式,便顯得比較不重要。

后端經由一次重讀取步驟后,利用描述目標處理(li)器(qi)的(de)指(zhi)(zhi)令集時所取得的(de)信(xin)息,將(jiang)抽(chou)象(xiang)暫存(cun)器(qi)替換成處理(li)器(qi)的(de)真實(shi)暫存(cun)器(qi)。此階(jie)段(duan)非常(chang)復雜,因為它必須關注所有GCC可移植平臺的(de)處理(li)器(qi)指(zhi)(zhi)令集的(de)規格與技術細(xi)節。

后(hou)端的(de)(de)最后(hou)步驟相當公(gong)式化,僅(jin)僅(jin)將前一階段得到的(de)(de)匯(hui)編(bian)語(yu)言(yan)代碼藉由(you)簡(jian)單的(de)(de)子例程轉換其暫存(cun)器與內存(cun)位置成相對應的(de)(de)機(ji)器碼。

特色功能

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

Ada〈GNAT〉

C〈GCC〉

C++(G++)

Fortran〈Fortran77:G77,Fortran90:GFORTRAN〉

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

Objective-C〈GOBJC〉

Objective-C++

先前版本納(na)入的(de)CHILL前端由于缺乏(fa)維護而被廢棄(qi)。

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

下列前端依然存在:

Modula-2

Modula-3

Pascal

PL/I

D語言

Mercury

VHDL

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