Tiny C Compiler

Tiny C Compiler（縮寫為TCC、tCc或TinyCC）是一个用於x86或x86-64系統的C编译器，開發者為Fabrice Bellard。軟體是設計用於低階電腦環境，或是於磁碟容量有限的空間中（1.44磁片或是硬碟）。軟體可以適用於Windows、Linux、Unix作業系統，而最新版本為0.9.27（2017年12月17日）。TCC是在GNU宽通用公共许可证（LGPL）協定規範下發布。

TCC符合ANSI C（C89/C90）規範Tiny C Compiler Reference Documentation  accessed on 2008-08-07]，亦符合新版的ISO C99標準規範和GNU C擴展的內嵌組合語言（即inline assembler）功能汇编语言。

 實現狀態 
 支援C99 VLA規範
 完全支援C89，基本符合C99規範
 可產生make dependencies（-MD/-MF）
 支援多種平台的目標代碼生成，如：x86-64、ARM、OSX、WinCE、kFreeBSD、Hurd

特色功能
TCC與其他C語言編譯器的不同處在於：

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

用途
著名的 TCC 应用包括：
 TCCBOOT，一个可以在大约 10 秒内从源码启动 Linux内核的啟動程式。该啟動程式可以从硬盘中读取 Linux 源代码，将可执行指令写入内存并执行。
 TCC 曾被用于演示对軟體後門的防御。 Wheeler, David A. Countering Trusting Trust through Diverse Double-Compiling . ACSAC.
 TCC 曾被用于编译 GCC，虽然需要不少补丁才能完成这个操作。
 Cinpy，一个允许在Python模块中添加C函数的库。这些 C 函数在运行时使用 TCC 编译，然后通过 ctypes 库在 Python 代码中调用。
 被安装在 JSLinux ，一个能在浏览器中运行 Linux 和其它操作系统的虚拟机（也是由 Bellard 开发的）。
 被用于编译超微型国际象棋引擎。
 TCC 曾被內建於 Google Android 系統，於 Android 2.0 版本中。

開發歷史
TCC 项目起源于 OTCC （Obfuscated TCC，即代码混淆过的 TCC），这是 Bellard 为赢得 2001 年国际C语言混乱代码大赛（IOCCC）编写的一个程序。其後，Bellard 反混淆并延伸發展了该程序，于是有了 TCC。Bellard, Fabrice. Obfuscated Tiny C Compiler 

在 2012 年 2 月 4 日之前的某个时间， Bellard 在 TCC 的官方网站上宣布他不再参与 TCC 的维护工作。

自从 Bellard 离开 TCC 项目以来，已经有不少组织和个人分发补丁或创建维护分支，为 TCC 提供构建支持以及问题修复。

參考文献
引用

来源
 Tiny C Compiler Reference Documentation accessed on 2008-08-07
 Glöckner, Daniel. Re: Tinycc-devel (no subject), September 8, 2006.
 a b grischka, GCC by TCC (some fixes), 29 Sep 2005
 Wheeler, David A. Countering Trusting Trust through Diverse Double-Compiling. ACSAC.
 Bellard, Fabrice. Obfuscated Tiny C Compiler
 Bellard Fabrice Project Homepage

外部連結
 Tiny C Compiler官方網站
 Tiny C Compiler develop archive
 Tiny C Compiler GIT

参见

 Portable C Compiler（PCC）

 內聯彙編（inline assembler）

Category:C編譯器
Category:組合語言軟體
Category:自由編譯器與直譯器