www.久久久久|狼友网站av天堂|精品国产无码a片|一级av色欲av|91在线播放视频|亚洲无码主播在线|国产精品草久在线|明星AV网站在线|污污内射久久一区|婷婷综合视频网站

當前位置:首頁 > 嵌入式 > 嵌入式硬件
[導讀] GCC(GNU Compiler Collection,GNU編譯器套裝),是一套由GNU開發(fā)的編程語言編譯器。它是一套以GPL及LGPL許可證所發(fā)行的自由軟件,也是GNU計劃的關(guān)鍵部分。

GCC(GNU Compiler Collection,GNU編譯器套裝),是一套由GNU開發(fā)的編程語言編譯器。它是一套以GPL及LGPL許可證所發(fā)行的自由軟件,也是GNU計劃的關(guān)鍵部分,亦是自由的類Unix及蘋果電腦Mac OS X 操作系統(tǒng)的標準編譯器。GCC(特別是其中的C語言編譯器)也常被認為是跨平臺編譯器的事實標準。

GCC原名為GNU C語言編譯器(GNU C Compiler),因為它原本只能處理C語言。GCC很快地擴展,變得可處理C++。之后也變得可處理Fortran、Pascal、Objective-C、Java,以及Ada與其他語言。

目錄 [隱藏]
1 概觀
2 目前支持的語言
2.1 內(nèi)嵌OpenMP支持
3 支持的處理器架構(gòu)
4 結(jié)構(gòu)
4.1 前端界面
4.2 中介界面
4.3 后端界面
5 替GCC程序除錯
6 參考書目及注釋
7 參閱
8 更多閱讀
9 外部鏈接

概觀


GCC是由理查德·馬修·斯托曼在1985年開始的。他首先擴增一個舊有的編譯器,使它能編譯C,這個編譯器一開始是以Pastel語言所寫的。Pastel是一個不可移植的Pascal語言特殊版,這個編譯器也只能編譯Pastel語言。為了讓自由軟件有一個編譯器,后來此編譯器由斯托曼和Len Tower在1987年[1]以C語言重寫[2]并成為GNU專案的編譯器。GCC的建立者由自由軟件基金會直接管理[3]。

在1997年,一群不滿GCC緩慢且封閉的創(chuàng)作環(huán)境者,組織了一個名為EGCS《Experimental/Enhanced GNU Compiler System》的專案,此專案匯整了數(shù)項實驗性的分支進入某個GCC專案的分支中。EGCS比起GCC的建構(gòu)環(huán)境更有活力,且EGCS最終也在1999年四月成為GCC的官方版本。

GCC目前由世界各地不同的數(shù)個程序設計師小組維護。它是移植到中央處理器架構(gòu)以及操作系統(tǒng)最多的編譯器。

由于GCC已成為GNU系統(tǒng)的官方編譯器(包括GNU/Linux家族),它也成為編譯與建立其他操作系統(tǒng)的主要編譯器,包括BSD家族、Mac OS X、NeXTSTEP與BeOS。

GCC通常是跨平臺軟件的編譯器首選。有別于一般局限于特定系統(tǒng)與運行環(huán)境的編譯器,GCC在所有平臺上都使用同一個前端處理程序,產(chǎn)生一樣的中介碼,因此此中介碼在各個其他平臺上使用GCC編譯,有很大的機會可得到正確無誤的輸出程序。

目前支持的語言


以2006年5月24日釋出的4.1.1版為準,本編譯器版本可處理下列語言:

Ada 《GNAT》
C 《GCC》
C++(G++)
Fortran 《Fortran 77: G77,F(xiàn)ortran 90: GFORTRAN》
Java 《編譯器:GCJ;解釋器:GIJ》
Objective-C 《GOBJC》
Objective-C++

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

Fortran前端在4.0版之前是G77,此前端僅支持Fortran 77。在本版本中,G77被廢棄而采用更新的GFortran,因為此前端支持Fortran 95。

下列前端依然存在:

Modula-2
Modula-3
Pascal
PL/I
D語言
Mercury
VHDL

[編輯] 內(nèi)嵌OpenMP支持
OpenMP是一種跨語言的對稱多處理器(SMP)多線程并行程序的編程工具,也非常適合當今越來越流行的單CPU多核硬件環(huán)境,因此從gcc4.2開始,OpenMP成為其內(nèi)嵌支持的并行編程規(guī)范,可以直接編譯內(nèi)嵌OpenMP語句的C/C++/Fortran95的源代碼。gcc4.2之前如果想在C/C++/Fortran中嵌入OpenMP語句的話,需要額外安裝庫和預處理器才能識別和正確處理這些語句。

gcc 4.2.0開始支持OpenMP v2.5
gcc 4.4.0開始支持OpenMP v2.5及v3.0
參見GNU的GOMP計劃


支持的處理器架構(gòu)


GCC目前支持下列處理器架構(gòu)(以4.1版為準):

Alpha
ARM
Atmel AVR
Blackfin
H8/300
IA-32(x86)與x86-64
IA-64例如:Itanium
MorphoSys家族
Motorola 68000
Motorola 88000
MIPS
PA-RISC
PDP-11
PowerPC
System/370,System/390
SuperH
HC12
SPARC
VAX
Renesas R8C/M16C/M32C家族

較不知名的處理器架構(gòu)也在官方釋出版本中支持:

A29K
ARC
C4x
CRIS
D30V
DSP16xx
FR-30
FR-V
Intel i960
IP2000
M32R
68HC11
MCORE
MMIX
MN10200
MN10300
NS32K
ROMP
Stormy16
V850
Xtensa

由FSF個別維護的GCC處理器架構(gòu):

D10V
MicroBlaze
PDP-10
MSP430
Z8000

當GCC需要移植到一個新平臺上,通常使用此平臺固有的語言來撰寫其初始階段。


結(jié)構(gòu)


GCC的外部界面長得像一個標準的Unix編譯器。用戶在命令行下鍵入gcc之程序名,以及一些命令參數(shù),以便決定每個輸入文件使用的個別語言編譯器,并為輸出代碼使用適合此硬件平臺的匯編語言編譯器,并且選擇性地運行鏈接器以制造可運行的程序。

每個語言編譯器都是獨立程序,此程序可處理輸入的源代碼,并輸出匯編語言碼。全部的語言編譯器都擁有共通的中介架構(gòu):一個前端解析符合此語言的源代碼,并產(chǎn)生一抽象語法樹,以及一翻譯此語法樹成為GCC的寄存器轉(zhuǎn)換語言《RTL》的后端。編譯器優(yōu)化與靜態(tài)代碼解析技術(shù)(例如FORTIFY_SOURCE[1],一個試圖發(fā)現(xiàn)緩存溢出《buffer overflow》的編譯器)在此階段應用于代碼上。最后,適用于此硬件架構(gòu)的匯編語言代碼以Jack Davidson與Chris Fraser發(fā)明的算法產(chǎn)出。

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


前端界面


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

直到最近,程序的語法樹結(jié)構(gòu)尚無法與欲產(chǎn)出的處理器架構(gòu)脫鉤。而語法樹的規(guī)則有時在不同的語言前端也不一樣,有些前端會提供它們特別的語法樹規(guī)則。

在2005年,兩種與語言脫鉤的新型態(tài)語法樹納入GCC中。它們稱為GENERIC與GIMPLE。語法解析變成產(chǎn)生與語言相關(guān)的暫時語法樹,再將它們轉(zhuǎn)成GENERIC。之后再使用"gimplifier"技術(shù)降低GENERIC的復雜結(jié)構(gòu),成為一較簡單的靜態(tài)唯一形式(Static Single Assignment form,SSA)基礎的GIMPLE形式。此形式是一個與語言和處理器架構(gòu)脫鉤的全局優(yōu)化通用語言,適用于大多數(shù)的現(xiàn)代函數(shù)編程語言。


中介界面


一般編譯器作者會將語法樹的優(yōu)化放在前端,但其實此步驟并不看語言的種類而有不同,且不需要用到語法解析器。因此GCC作者們將此步驟歸入通稱為中介階段的部分里。此類的優(yōu)化包括消解死碼、消解重復計算與全局數(shù)值重編碼等。許多優(yōu)化技巧也正在實現(xiàn)中。


后端界面


GCC后端的行為因不同的前處理器宏和特定架構(gòu)的功能而不同,例如不同的字符尺寸、調(diào)用方式與大小尾序等。后端界面的前半部利用這些消息決定其RTL的生成形式,因此雖然GCC的RTL理論上不受處理器影響,但在此階段其抽象指令已被轉(zhuǎn)換成目標架構(gòu)的格式。

GCC的優(yōu)化技巧依其釋出版本而有很大不同,但都包含了標準的優(yōu)化算法,例如循環(huán)優(yōu)化、線程跳躍、共通程序子句消減、指令調(diào)度等等。而RTL的優(yōu)化由于可用的情形較少,且缺乏較高級的信息,因此比較起近來增加的GIMPLE語法樹形式[2],便顯得比較不重要。

后端經(jīng)由一重讀取步驟后,利用描述目標處理器的指令集時所取得的信息,將抽象寄存器替換成處理器的真實寄存器。此階段非常復雜,因為它必須關(guān)照所有GCC可移植平臺的處理器指令集的規(guī)格與技術(shù)細節(jié)。

后端的最后步驟相當公式化,僅僅將前一階段得到的匯編語言碼借由簡單的副函數(shù)轉(zhuǎn)換其寄存器與存儲器位置成相對應的機器代碼。


替GCC程序除錯


為GCC除錯的首選工具當然是GNU除錯器。其他特殊用途的除錯工具是Valgrind,用以發(fā)現(xiàn)存儲器泄漏 (Memory leak)。而GNU測量器(gprof)可以得知程序中某些函數(shù)花費多少時間,以及其調(diào)用頻率;此功能需要用戶在編譯時選定測量《profiling》選項。

本站聲明: 本文章由作者或相關(guān)機構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點,本站亦不保證或承諾內(nèi)容真實性等。需要轉(zhuǎn)載請聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請及時聯(lián)系本站刪除。
換一批
延伸閱讀

9月2日消息,不造車的華為或?qū)⒋呱龈蟮莫毥谦F公司,隨著阿維塔和賽力斯的入局,華為引望愈發(fā)顯得引人矚目。

關(guān)鍵字: 阿維塔 塞力斯 華為

加利福尼亞州圣克拉拉縣2024年8月30日 /美通社/ -- 數(shù)字化轉(zhuǎn)型技術(shù)解決方案公司Trianz今天宣布,該公司與Amazon Web Services (AWS)簽訂了...

關(guān)鍵字: AWS AN BSP 數(shù)字化

倫敦2024年8月29日 /美通社/ -- 英國汽車技術(shù)公司SODA.Auto推出其旗艦產(chǎn)品SODA V,這是全球首款涵蓋汽車工程師從創(chuàng)意到認證的所有需求的工具,可用于創(chuàng)建軟件定義汽車。 SODA V工具的開發(fā)耗時1.5...

關(guān)鍵字: 汽車 人工智能 智能驅(qū)動 BSP

北京2024年8月28日 /美通社/ -- 越來越多用戶希望企業(yè)業(yè)務能7×24不間斷運行,同時企業(yè)卻面臨越來越多業(yè)務中斷的風險,如企業(yè)系統(tǒng)復雜性的增加,頻繁的功能更新和發(fā)布等。如何確保業(yè)務連續(xù)性,提升韌性,成...

關(guān)鍵字: 亞馬遜 解密 控制平面 BSP

8月30日消息,據(jù)媒體報道,騰訊和網(wǎng)易近期正在縮減他們對日本游戲市場的投資。

關(guān)鍵字: 騰訊 編碼器 CPU

8月28日消息,今天上午,2024中國國際大數(shù)據(jù)產(chǎn)業(yè)博覽會開幕式在貴陽舉行,華為董事、質(zhì)量流程IT總裁陶景文發(fā)表了演講。

關(guān)鍵字: 華為 12nm EDA 半導體

8月28日消息,在2024中國國際大數(shù)據(jù)產(chǎn)業(yè)博覽會上,華為常務董事、華為云CEO張平安發(fā)表演講稱,數(shù)字世界的話語權(quán)最終是由生態(tài)的繁榮決定的。

關(guān)鍵字: 華為 12nm 手機 衛(wèi)星通信

要點: 有效應對環(huán)境變化,經(jīng)營業(yè)績穩(wěn)中有升 落實提質(zhì)增效舉措,毛利潤率延續(xù)升勢 戰(zhàn)略布局成效顯著,戰(zhàn)新業(yè)務引領(lǐng)增長 以科技創(chuàng)新為引領(lǐng),提升企業(yè)核心競爭力 堅持高質(zhì)量發(fā)展策略,塑強核心競爭優(yōu)勢...

關(guān)鍵字: 通信 BSP 電信運營商 數(shù)字經(jīng)濟

北京2024年8月27日 /美通社/ -- 8月21日,由中央廣播電視總臺與中國電影電視技術(shù)學會聯(lián)合牽頭組建的NVI技術(shù)創(chuàng)新聯(lián)盟在BIRTV2024超高清全產(chǎn)業(yè)鏈發(fā)展研討會上宣布正式成立。 活動現(xiàn)場 NVI技術(shù)創(chuàng)新聯(lián)...

關(guān)鍵字: VI 傳輸協(xié)議 音頻 BSP

北京2024年8月27日 /美通社/ -- 在8月23日舉辦的2024年長三角生態(tài)綠色一體化發(fā)展示范區(qū)聯(lián)合招商會上,軟通動力信息技術(shù)(集團)股份有限公司(以下簡稱"軟通動力")與長三角投資(上海)有限...

關(guān)鍵字: BSP 信息技術(shù)
關(guān)閉
關(guān)閉