Tiny C Compiler

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

Tiny C Compiler
開發者Fabrice Bellard
穩定版本
0.9.27
(2017年12月17日2017-12-17
源代码库
编程语言C語言組合語言
操作系统LinuxUnixWindows
类型C语言編譯器
许可协议GNU宽通用公共许可证
网站http://bellard.org/tcc/

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

更新項目

  • 支援C99 VLA規範
  • 可產生make的dependencies(-MD/-MF)
  • 支援多種平台的程式編寫,例:x86-64ARMOSXWinCEkFreeBSDHurd
  • 修正一些已知的bug

特色功能

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

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

新版本特色

  • 0.9.27版本取消了原有的”tiny_impdef.exe”(產生DLL檔案)與”tiny_libmaker.exe”。
  • 在64位元版本中提供可編譯32位元的編譯器i386-win32-tcc.exe,而在32位元版本中則提供64位元的編譯器x86_64-win32-tcc.exe,使用方式相同於tcc的指令。
  • 原編譯DLL功能,則以指令方式合併到tcc內,以tcc -impdef *.dll方式來使用

用途

著名的 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][9]

開發歷史

TCC 项目起源于 OTCC (Obfuscated TCC,即代码混淆过的 TCC),这是 Bellard 为赢得 2001 年国际C语言混乱代码大赛(IOCCC)编写的一个程序。其後,Bellard 反混淆并延伸發展了该程序,于是有了 TCC。[10]

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

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

參考文献

引用

  1. Tiny C Compiler Reference Documentation 页面存档备份,存于 accessed on 2008-08-07]
  2. . [2019-03-01]. (原始内容存档于2019-02-19).
  3. . [2019-03-01]. (原始内容存档于2011-05-18).
  4. Wheeler, David A. Countering Trusting Trust through Diverse Double-Compiling 页面存档备份,存于. ACSAC.
  5. . [2019-03-01]. (原始内容存档于2008-11-20).
  6. . [2019-03-01]. (原始内容存档于2011-07-09).
  7. . [2019-03-01]. (原始内容存档于2019-03-02).
  8. . [2012-05-06]. (原始内容存档于2010-10-23).
  9. . [2012-11-12]. (原始内容存档于2012-09-20).
  10. Bellard, Fabrice. Obfuscated Tiny C Compiler 页面存档备份,存于
  11. . [2012-02-04]. (原始内容存档于2011-04-08).

来源


外部連結


参见

維基教科書中的相關電子:TCC使用指南
This article is issued from Wikipedia. The text is licensed under Creative Commons - Attribution - Sharealike. Additional terms may apply for the media files.