GNU C 編譯器內部/簡介
GNU 編譯器集合 (GCC) 是一個自由軟體專案,包括用於 Ada、C、C++、Fortran、Java 和 Objective-C 的編譯器,以及這些語言的庫。它能夠為 各種平臺 生成可執行檔案,包括 x86、ARM、MIPS、PowerPC 等。
GCC 的主頁是 http://gcc.gnu.org。GCC 的現代歷史始於 GCC 2.95 版本。該版本於 1999 年 7 月 31 日釋出。GCC 3.0 被認為是 C++ 編譯器的現代歷史,於 2001 年 6 月 18 日釋出。後來又建立了其他分支。截至目前,活躍的開發分支是 GCC 3.4,最新版本釋出於 2005 年 11 月 30 日,GCC 4.0 最後一次釋出於 2005 年 9 月 28 日。GCC 4.1 於 2006 年 2 月 28 日釋出。GCC 4.2 是 GCC 的開發分支。原始碼儲存庫可以 線上 獲取。GCC 4.2(主幹)是唯一進行實際開發和新增新功能的地方。
GCC 在工業界和學術界都已變得流行。其原始碼的可用性使得人們可以向編譯器新增新功能。GCC 用於多個基於原始碼的安全專案,即在用於使程式更安全的工具中對程式的原始碼進行檢測。然而,到目前為止,描述 GCC 內部結構的文件卻很少。
當實現新功能時,會直接修改 GCC 的原始碼。然而,這些編譯器擴充套件難以分發,因為 GCC 是一個非常大的程式。建立模組化擴充套件的框架將極大地簡化編譯器擴充套件的開發。
GCC 4.0 及更高版本包含 SSA 最佳化器,應用於進一步的高階最佳化和轉換。RTL 級別應僅用於特定於目標的最佳化和低階最佳化,例如排程。在某些人看來,4.0 之前的任何 GCC 都是一個過時的編譯器,已經顯露出它的年代感。
本書的目的是滿足 GCC 駭客的需求。我們從 GCC 3.4.1 架構 的描述開始,重點介紹原始碼解析器。我們選擇了這個版本的 GCC,因為我們主要使用過它。然後,我們解決了擴充套件開發的問題。我們在 GCC 可擴充套件模組 (GEM) 專案中介紹了 下一章。GEM 在整個 GCC 原始碼中提供了許多掛鉤。它被實現為 GCC 的補丁。基於 GEM 的編譯器擴充套件作為獨立程式開發。當擴充套件完成時,與不使用 GEM 時的分發 GCC 原始碼相比,僅分發其原始碼。我們在 本書末尾 給出了演示 GEM 程式設計的示例。
| 帶回家: | 本書是:為擴充套件程式設計師提供的 GCC 內部指南。介紹了用於開發模組化擴充套件的 GEM 框架。本書不是:程式語言參考,GCC 安裝手冊。 |