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