GCC編譯器是一款功能非常強(qiáng)大的編譯軟件。該軟件從最開始只支持C語言,到后來可處理 Fortran、Pascal、Objective-C、Java, 以及 Ada 與其他語言,讓這款軟件的實(shí)用性不斷的提升,并且軟件還在持續(xù)更新,有需要的編程人員們快來下載吧!
【軟件優(yōu)勢】
【前端接口】
前端的功能在于產(chǎn)生一個(gè)可讓后端處理之語法樹。此語法解析器是手寫之遞歸語法解析器。
直到2004年,程序的語法樹結(jié)構(gòu)尚無法與欲產(chǎn)出的處理器架構(gòu)脫鉤。而語法樹的規(guī)則有時(shí)在不同的語言前端也不一樣,有些前端會提供它們特別的語法樹規(guī)則。
在2005年,兩種與語言脫鉤的新型態(tài)語法樹納入GCC中。它們稱為GENERIC與GIMPLE。語法解析變成產(chǎn)生與語言相關(guān)的暫時(shí)語法樹,再將它們轉(zhuǎn)成GENERIC。之后再使用"gimplifier"技術(shù)降低GENERIC的復(fù)雜結(jié)構(gòu),成為一較簡單的靜態(tài)形式(Static Single Assignment form,SSA)基礎(chǔ)的GIMPLE形式。此形式是一個(gè)與語言和處理器架構(gòu)脫鉤的全域通用語言,適用于大多數(shù)的現(xiàn)代編程語言。
【中介接口】
一般編譯器作者會將語法樹放在前端,但其實(shí)此步驟并不看語言的種類而有不同,且不需要用到語法解析器。因此GCC作者們將此步驟歸入通稱為中介階段的部分里。此類包括消解死碼、消解重復(fù)運(yùn)算與全域數(shù)值重編碼等。
【后端接口】
GCC后端的行為因不同的前處理器宏和特定架構(gòu)的功能而不同,例如不同的字符尺寸、呼叫方式與大小尾序等。后端接口的前半部利用這些訊息決定其RTL的生成形式,因此雖然GCC的RTL理論上不受處理器影響,但在此階段其抽象指令已被轉(zhuǎn)換成目標(biāo)架構(gòu)的格式。