Tiny C Compiler

維基百科,自由的百科全書
跳至導覽 跳至搜尋
Tiny C Compiler
開發者Fabrice Bellard
目前版本0.9.27(2017年12月17日,​8年前​(2017-12-17
原始碼庫
  • {{URL|example.com|可选的显示文本}}
Module:EditAtWikidata第29行Lua錯誤:attempt to index field 'wikibase' (a nil value)
程式語言C語言組合語言
引擎
    Module:EditAtWikidata第29行Lua錯誤:attempt to index field 'wikibase' (a nil value)
    作業系統LinuxUnixWindows
    類型C語言編譯器
    授權條款GNU較寬鬆公共許可證
    網站http://bellard.org/tcc/
    File:Tiny C Compiler 0.9.23 Windows help en.png

    Tiny C Compiler(縮寫為TCC、tCc或TinyCC)是一個用於x86x86-64系統的C編譯器,開發者為Fabrice Bellard。軟體是設計用於低階電腦環境,或是於磁碟容量有限的空間中(1.44磁片或是硬碟)。軟體可以適用於WindowsLinuxUnix作業系統,而最新版本為0.9.27(2017年12月17日)。TCC是在GNU較寬鬆公共許可證(LGPL)協定規範下發布。

    TCC符合ANSI C(C89/C90)規範[1],亦符合新版的ISO C99標準規範和GNU C擴展的內嵌組合語言(即inline assembler)功能組合語言

    實現狀態[編輯]

    特色功能[編輯]

    TCC與其他C語言編譯器的不同處在於:

    • 容量小,軟體大小約為1MB左右,可儲存於1.44MB的磁碟片中使用。
    • 速度快,以TCC開發的程式可執行於x86(16/32位元)與 x86-64(64位元)環境中,據開發者說,執行比GCC較來得相當快速。[2]程式亦可以包含組合語言inline assembler)於其中執行與編譯。
    • 無限制,其他C語言的動態Library祗要符合ISO C99規範,皆可以給予TCC來使用與編譯。
    • 安全性,TCC包含一個可選的記憶體邊界檢查,經過檢測的程式碼可以隨意地混合於標準程式碼內。
    • 其他,TCC為命令列式的使用,目前並無整合性開發環境,但可以配合其他的編輯軟體使用(如:UltraEdit ...等)。

    用途[編輯]

    著名的 TCC 應用包括:

    • TCCBOOT[3],一個可以在大約 10 秒內從原始碼啟動 Linux核心啟動程式。該啟動程式可以從硬碟中讀取 Linux 原始碼,將可執行指令寫入主記憶體並執行。
    • TCC 曾被用於演示對軟體後門的防禦。 [4]
    • TCC 曾被用於編譯 GCC,雖然需要不少修補程式才能完成這個操作。
    • Cinpy[5],一個允許在Python模組中添加C函式的庫。這些 C 函式在執行時使用 TCC 編譯,然後通過 ctypes 庫在 Python 代碼中呼叫。
    • 被安裝在 JSLinux[6] ,一個能在瀏覽器中執行 Linux 和其它作業系統的虛擬機器(也是由 Bellard 開發的)。
    • 被用於編譯超微型西洋棋引擎。[7]
    • TCC 曾被內建於 Google Android 系統,於 Android 2.0 版本中。[8]

    開發歷史[編輯]

    TCC 專案起源於 OTCC (Obfuscated TCC,即代碼混淆過的 TCC),這是 Bellard 為贏得 2001 年國際C語言混亂代碼大賽(IOCCC)編寫的一個程式。其後,Bellard 反混淆並延伸發展了該程式,於是有了 TCC。[9]

    在 2012 年 2 月 4 日之前的某個時間, Bellard 在 TCC 的官方網站上宣布他不再參與 TCC 的維護工作。[10]

    自從 Bellard 離開 TCC 專案以來,已經有不少組織和個人分發修補程式或建立維護分支,為 TCC 提供構建支援以及問題修復。

    參考文獻[編輯]

    參照[編輯]

    1. ^ Tiny C Compiler Reference Documentation頁面存檔備份,存於網際網路檔案館) accessed on 2008-08-07]
    2. ^ Tiny C Compiler官方網站上关于编译速度的对比. [2019-03-01]. (原始內容存檔於2019-02-19). 
    3. ^ TCCBOOT. [2019-03-01]. (原始內容存檔於2011-05-18). 
    4. ^ Wheeler, David A. Countering Trusting Trust through Diverse Double-Compiling頁面存檔備份,存於網際網路檔案館. ACSAC.
    5. ^ Cinpy. [2019-03-01]. (原始內容存檔於2008-11-20). 
    6. ^ JavaScript Linux. [2019-03-01]. (原始內容存檔於2011-07-09). 
    7. ^ Super Micro-Max Chess Engine. [2019-03-01]. (原始內容存檔於2019-03-02). 
    8. ^ libacc : Android 2.0內建的輕量級C Compiler. [2012-05-06]. (原始內容存檔於2010-10-23). 
    9. ^ Bellard, Fabrice. Obfuscated Tiny C Compiler頁面存檔備份,存於網際網路檔案館
    10. ^ archive.org 上最古老的 TCC 官方网站快照,宣布 Bellard 停止维护 TCC 项目。. [2012-02-04]. (原始內容存檔於2011-04-08). 

    來源[編輯]


    外部連結[編輯]


    參見[編輯]