Tiny C Compiler
Tiny C Compiler(縮寫為TCC、tCc或TinyCC)是一个用於x86(16/32位元)或x86-64(64位元)系統的C编译器,開發者為Fabrice Bellard。軟體是設計用於低階電腦環境,或是於磁碟容量有限的空間中(1.44磁片或是硬碟)。軟體可以適用於Windows、Linux、Unix作業系統,而最新版本為0.9.27(2017年12月17日)。TCC是在GNU宽通用公共许可证(LGPL)協定規範下發布。
開發者 | Fabrice Bellard |
---|---|
当前版本 | 0.9.27(2017年12月17日 | )
源代码库 | |
编程语言 | C語言及組合語言 |
操作系统 | Linux、Unix、Windows |
类型 | C语言編譯器 |
许可协议 | GNU宽通用公共许可证 |
网站 | http://bellard.org/tcc/ |
TCC符合ANSI C(C89/C90)規範[1]亦符合新版的ISO C99標準規範,與GNU C擴展的內嵌組合語言(即inline assembler)功能汇编语言。
實現狀態
特色功能
TCC與其他C語言編譯器的不同處在於:
用途
著名的 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 提供构建支持以及问题修复。
參考文献
引用
- ^ Tiny C Compiler Reference Documentation (页面存档备份,存于互联网档案馆) accessed on 2008-08-07]
- ^ Tiny C Compiler官方網站上关于编译速度的对比. [2019-03-01]. (原始内容存档于2019-02-19).
- ^ TCCBOOT. [2019-03-01]. (原始内容存档于2011-05-18).
- ^ Wheeler, David A. Countering Trusting Trust through Diverse Double-Compiling (页面存档备份,存于互联网档案馆). ACSAC.
- ^ Cinpy. [2019-03-01]. (原始内容存档于2008-11-20).
- ^ JavaScript Linux. [2019-03-01]. (原始内容存档于2011-07-09).
- ^ Super Micro-Max Chess Engine. [2019-03-01]. (原始内容存档于2019-03-02).
- ^ libacc : Android 2.0內建的輕量級C Compiler. [2012-05-06]. (原始内容存档于2010-10-23).
- ^ Bellard, Fabrice. Obfuscated Tiny C Compiler (页面存档备份,存于互联网档案馆)
- ^ archive.org 上最古老的 TCC 官方网站快照,宣布 Bellard 停止维护 TCC 项目。. [2012-02-04]. (原始内容存档于2011-04-08).
来源
- 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)
- Small-C
- 內聯彙編(inline assembler)