数力计分享 http://blog.sciencenet.cn/u/baibing

博文

[转载]Tiny C Compiler简介

已有 801 次阅读 2020-1-11 12:21 |个人分类:编程|系统分类:科研笔记|文章来源:转载

Tiny C Compiler简介-wiki       

https://www.cnblogs.com/CodeWorkerLiMing/p/11665542.html

       

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)协议规范下发布。

TCC符合ANSI C(C89/C90)规范[1]亦符合新版的ISO C99标准规范,与GNU C扩展的内嵌汇编语言(即inline assembler)功能汇编语言

Tiny C Compiler
开发者 Fabrice Bellard
稳定版本 0.9.27 (2017年12月17日,​21个月前)
源代码库 编辑维基数据链接
编程语言 C语言汇编语言
操作系统 LinuxUnixWindows
类型 C语言编译器
许可协议 GNU宽通用公共许可证
网站 http://bellard.org/tcc/


目录

更新项目[编辑]

  • 支持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 系统,于 Andriod 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 Documentationaccessed on 2008-08-07]

  2. ^ Tiny C Compiler官方网站上关于编译速度的对比

  3. ^ TCCBOOT

  4. ^ Wheeler, David A. Countering Trusting Trust through Diverse Double-Compiling. ACSAC.

  5. ^ Cinpy 互联网档案馆存档,存档日期2008-11-20.

  6. ^ JavaScript Linux

  7. ^ Super Micro-Max Chess Engine

  8. ^ libacc : Android 2.0内置的轻量级C Compiler

  9. ^ 透过libtcc来扩展C语言

  10. ^ Bellard, Fabrice. Obfuscated Tiny C Compiler

  11. ^ archive.org 上最古老的 TCC 官方网站快照,宣布 Bellard 停止维护 TCC 项目。

来源[编辑]

 

外部链接[编辑]




http://blog.sciencenet.cn/blog-58025-1213748.html

上一篇:[转载]二氧化碳输送管道工程设计标准
下一篇:[转载]TCC 安装配置

0

发表评论 评论 (0 个评论)

数据加载中...
扫一扫,分享此博文

全部作者的其他最新博文

Archiver|手机版|科学网 ( 京ICP备07017567号-12 )

GMT+8, 2020-2-27 20:32

Powered by ScienceNet.cn

Copyright © 2007- 中国科学报社

返回顶部