C编译器-TinyCC


Tiny C Compiler(缩写为TCC、tCc或TinyCC)是一个用于x86(16/32位)或x86-64(64位)系统的C语言编译器,开发者为Fabrice Bellard。软件是设计用于低端电脑环境,或是于磁盘容量有限的空间中(1.44磁片或是硬盘)。软件可以适用于Windows、泛Unix操作系统,TCC是在GNU宽通用公共许可证(LGPL)协议规范下发布。

TCC符合ANSI C(C89/C90)规范亦符合新版的ISO C99标准规范,与GNU C扩展的内嵌汇编语言(即inline assembler)功能汇编语言。
特色功能
与其他C语言编译器的不同处在于:
容量小,软件大小约为1MB左右,可存储于1.44MB的磁盘片中使用。
速度快,以TCC开发的程序可执行于x86(16/32位)与 x86-64(64位)环境中,据开发者说,执行比GCC较来得相当快速。[2]程序亦可以包含汇编语言(inline assembler)于其中执行与编译。
无限制,其他C语言的动态Library祗要符合ISO C99规范,皆可以给予TCC来使用与编译。
安全性,TCC包含一个可选的存储器边界检查,经过检测的代码可以随意地混合于标准代码内。
其他,TCC为命令行式的使用,目前并无集成性开发环境,但可以配合其他的编辑软件使用(如:UltraEdit ...等)。
实现状态
支持C99 VLA规范
完全支持C89,基本符合C99规范
可产生make dependencies(-MD/-MF)
支持多种平台的目标代码生成,例:x86-64、ARM、OSX、WinCE、kFreeBSD、Hurd
著名的 TCC 应用包括:
1.TCCBOOT,一个可以在大约十秒内从源码启动 Linux内核的引导程序。该引导程序可以从硬盘中读取 Linux 源代码,将可执行指令写入内存并执行。
2.TCC 曾被用于演示对软件后门的防御。
3.TCC 曾被用于编译 GCC,虽然需要不少补丁才能完成这个操作。
4.Cinpy,一个允许在Python模块中添加C函数的库。这些 C 函数在运行时使用 TCC 编译,然后通过 ctypes 库在 Python 代码中调用。
5.被安装在 JSLinux ,一个能在浏览器中运行 Linux 和其它操作系统的虚拟机(同为 Bellard 所开发)。
6.被用于编译超微型国际象棋引擎。
6.TCC 曾被内置于 Google Android 系统,于 Android 2.0 版本中。
TCC 项目起源于 OTCC (Obfuscated TCC,即代码混淆过的 TCC),这是 Bellard 为赢得 2001 年国际C语言混乱代码大赛(IOCCC)编写的一个程序。其后,Bellard 反混淆并延伸发展了该程序,于是有了 TCC。
在 2012 年 2 月上旬,Bellard 在 TCC 的官方网站上宣布他不再参与 TCC 的维护工作。自从 Bellard 离开 TCC 项目以来,已经有不少组织和个人分发补丁或创建维护分支,为 TCC 提供构建支持以及问题修复。
最新版本:0.9
v0.9.27为最新版本,于2017年12月中旬发布。
官方主页:https://bellard.org/tcc/

TCC符合ANSI C(C89/C90)规范亦符合新版的ISO C99标准规范,与GNU C扩展的内嵌汇编语言(即inline assembler)功能汇编语言。
特色功能
与其他C语言编译器的不同处在于:
容量小,软件大小约为1MB左右,可存储于1.44MB的磁盘片中使用。
速度快,以TCC开发的程序可执行于x86(16/32位)与 x86-64(64位)环境中,据开发者说,执行比GCC较来得相当快速。[2]程序亦可以包含汇编语言(inline assembler)于其中执行与编译。
无限制,其他C语言的动态Library祗要符合ISO C99规范,皆可以给予TCC来使用与编译。
安全性,TCC包含一个可选的存储器边界检查,经过检测的代码可以随意地混合于标准代码内。
其他,TCC为命令行式的使用,目前并无集成性开发环境,但可以配合其他的编辑软件使用(如:UltraEdit ...等)。
实现状态
支持C99 VLA规范
完全支持C89,基本符合C99规范
可产生make dependencies(-MD/-MF)
支持多种平台的目标代码生成,例:x86-64、ARM、OSX、WinCE、kFreeBSD、Hurd
著名的 TCC 应用包括:
1.TCCBOOT,一个可以在大约十秒内从源码启动 Linux内核的引导程序。该引导程序可以从硬盘中读取 Linux 源代码,将可执行指令写入内存并执行。
2.TCC 曾被用于演示对软件后门的防御。
3.TCC 曾被用于编译 GCC,虽然需要不少补丁才能完成这个操作。
4.Cinpy,一个允许在Python模块中添加C函数的库。这些 C 函数在运行时使用 TCC 编译,然后通过 ctypes 库在 Python 代码中调用。
5.被安装在 JSLinux ,一个能在浏览器中运行 Linux 和其它操作系统的虚拟机(同为 Bellard 所开发)。
6.被用于编译超微型国际象棋引擎。
6.TCC 曾被内置于 Google Android 系统,于 Android 2.0 版本中。
TCC 项目起源于 OTCC (Obfuscated TCC,即代码混淆过的 TCC),这是 Bellard 为赢得 2001 年国际C语言混乱代码大赛(IOCCC)编写的一个程序。其后,Bellard 反混淆并延伸发展了该程序,于是有了 TCC。
在 2012 年 2 月上旬,Bellard 在 TCC 的官方网站上宣布他不再参与 TCC 的维护工作。自从 Bellard 离开 TCC 项目以来,已经有不少组织和个人分发补丁或创建维护分支,为 TCC 提供构建支持以及问题修复。
最新版本:0.9
v0.9.27为最新版本,于2017年12月中旬发布。
官方主页:https://bellard.org/tcc/