OCC 編譯器 -- 起源

OCC 編譯器

源起

簡介

TinyCC

編譯器

組譯器

目的檔

連結器

整合測試

訊息

相關網站

參考文獻

最新修改

簡體版

English

有一天,我的大哥問我有沒有可能用 C++ 改寫整個 gcc,如果可能,他想進行這樣一個專案,於是我上網開始尋找是否有人做過這樣的事情。

經過使用 Google 搜尋之後,我找到了一個由 Ian Lance Taylor 所發出的訊息,Ian 是一個 Google 公司的編譯器專家,他曾經用 C++ 將 GNU 中的連結器整個改寫,成為 Gold 專案,據說 Gold 專案寫得很好,得到許多開放原始碼的人士激賞。

Ian 同樣不喜歡 gcc 以 C 語言撰寫的這種作法,於是試圖建立 gcc 的分枝專案 gcc-in-cxx,以便將 gcc 用 C++ 改寫,並且向 gcc 的主要開發成員 (應該是 gcc-AT-gcc.gnu.org 這個小組) 建議採用 C++ 改寫整個 gcc,於是引發了一場論戰,這場論戰的網址如下。

http://lwn.net/Articles/286539/

在雙方進行激烈討論之後,brianomahoney 拒絕了 Ian Lance Taylor 的這項請求,這導致雙方後來吵鬧收場,不歡而散。

但是後來 Ian 不服氣,繼續奮戰,於是有了下列結果

http://lwn.net/Articles/339262/

Ian 是個編譯器專家,現在應該是在 Google 做 Go 語言的編譯器,以下是 Ian Lance Taylor 的網址與聯絡方式

網站:http://www.airs.com/ian/
BLOG:http://www.airs.com/blog/
email:moc.sria|nai#moc.sria|nai

目前 http://gcc.gnu.org/wiki/gcc-in-cxx 這個分支專案仍在,網址如下

http://gcc.gnu.org/wiki/gcc-in-cxx (http://gcc.gnu.org/viewcvs/branches/gcc-in-cxx/)

這個專案的最後更新日期是 2009 年六月, 目前似乎已經沒有人在維護了,顯然 Ian Lance Taylor 本人也已經不太想處理自己的專案了。

這種專案中止的情況在開放原始碼其實是相當常見的。

專案為何中止呢?顯然改寫 gcc 的企圖心太大了,gcc 已經是一個百萬行的軟體,Ian 提出改寫的計畫很難獲得認同,因為這是個龐大的工程,這也是為甚麼 brianomahoney 要拒絕的原因。

那麼,想要創造一個用 C++ 撰寫的 C 語言編譯器,是否就非要選擇 gcc 改寫不可呢?當然不是,最近,Tiny CC 這個編譯器被 Google 放入到 Android 專案當中,顯示 Tiny CC 是個很成熟的專案,筆者曾經下載過 Tiny CC 並建置,輕而易舉就建好了。

Tiny CC 整個程式專案大約只有兩萬行,要整個以 C++ 改寫是較為可行的,只要有人願意投入時間就辦得到,預估一個人工作大約一兩個月的時間就可以將 Tiny CC 完全用 C++ 改寫完畢。我想這是比較簡單的作法。

本專案將試圖從研究 TinyCC 開始,待理解程度夠深入之後,再評估是否將 TinyCC 改寫成 C++ 版本。

陳鍾誠 2011年 2 月 18 日於金門大學

參考文獻

  1. http://linux.chinaunix.net/bbs/redirect.php?tid=1121766&goto=lastpost

摘要:Gcc-in-cxx
GCC Summit 2008中的《A New ELF Linker》介绍了相关的工作。gold的代码,写得非常漂亮。
Gcc-in-cxx也应该非常值得期待。

Facebook

Unless otherwise stated, the content of this page is licensed under Creative Commons Attribution-NonCommercial-ShareAlike 3.0 License