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). 

    来源[编辑]


    外部链接[编辑]


    参见[编辑]