GCC編譯器是一款可以處理多種語(yǔ)言的編程開(kāi)發(fā)工具,在不斷的研發(fā)過(guò)程中,GCC編譯器從一開(kāi)始的只支持C語(yǔ)言,到后來(lái)可處理Fortran、Pascal、Objective-C、Java等等多種語(yǔ)言,可見(jiàn)其實(shí)用性,且GCC編譯器還在不斷的添加新內(nèi)容。
軟件特色
1、編譯高效
可以很高效的進(jìn)行程序的編譯工作。
2、功能完善
十分完善全面的編譯功能。
3、輕松便捷
操作方式十分人性化,可以給你出色的體驗(yàn)。
軟件功能
1、前端接口
前端的功能在于產(chǎn)生一個(gè)可讓后端處理之語(yǔ)法樹(shù)。此語(yǔ)法解析器是手寫(xiě)之遞歸語(yǔ)法解析器。
直到2004年,程序的語(yǔ)法樹(shù)結(jié)構(gòu)尚無(wú)法與欲產(chǎn)出的處理器架構(gòu)脫鉤。而語(yǔ)法樹(shù)的規(guī)則有時(shí)在不同的語(yǔ)言前端也不一樣,有些前端會(huì)提供它們特別的語(yǔ)法樹(shù)規(guī)則。
在2005年,兩種與語(yǔ)言脫鉤的新型態(tài)語(yǔ)法樹(shù)納入GCC中。它們稱(chēng)為GENERIC與GIMPLE。語(yǔ)法解析變成產(chǎn)生與語(yǔ)言相關(guān)的暫時(shí)語(yǔ)法樹(shù),再將它們轉(zhuǎn)成GENERIC。之后再使用“gimplifier”技術(shù)降低GENERIC的復(fù)雜結(jié)構(gòu),成為一較簡(jiǎn)單的靜態(tài)形式(Static Single Assignment form,SSA)基礎(chǔ)的GIMPLE形式。此形式是一個(gè)與語(yǔ)言和處理器架構(gòu)脫鉤的全域通用語(yǔ)言,適用于大多數(shù)的現(xiàn)代編程語(yǔ)言。
2、中介接口
一般編譯器作者會(huì)將語(yǔ)法樹(shù)放在前端,但其實(shí)此步驟并不看語(yǔ)言的種類(lèi)而有不同,且不需要用到語(yǔ)法解析器。因此GCC作者們將此步驟歸入通稱(chēng)為中介階段的部分里。此類(lèi)包括消解死碼、消解重復(fù)運(yùn)算與全域數(shù)值重編碼等。
3、后端接口
GCC后端的行為因不同的前處理器宏和特定架構(gòu)的功能而不同,例如不同的字符尺寸、呼叫方式與大小尾序等。后端接口的前半部利用這些訊息決定其RTL的生成形式,因此雖然GCC的RTL理論上不受處理器影響,但在此階段其抽象指令已被轉(zhuǎn)換成目標(biāo)架構(gòu)的格式。
GCC的技巧依其釋出版本而有很大不同,但都包含了標(biāo)準(zhǔn)的算法,RTL由于可用的情形較少,且缺乏較高階的資訊,因此相比較起來(lái),增加的GIMPLE語(yǔ)法樹(shù)形式,便顯得比較不重要。
后端經(jīng)由一次重讀取步驟后,利用描述目標(biāo)處理器的指令集時(shí)所取得的信息,將抽象暫存器替換成處理器的真實(shí)暫存器。此階段非常復(fù)雜,因?yàn)樗仨氷P(guān)注所有GCC可移植平臺(tái)的處理器指令集的規(guī)格與技術(shù)細(xì)節(jié)。
后端的最后步驟相當(dāng)公式化,僅僅將前一階段得到的匯編語(yǔ)言代碼藉由簡(jiǎn)單的子例程轉(zhuǎn)換其暫存器與內(nèi)存位置成相對(duì)應(yīng)的機(jī)器碼。