Tiny C Compiler

Tiny C Compiler
Page d'aide sur l'homonymie Pour les articles homonymes, voir Tcc.

Tiny C Compiler (tcc, tout petit compilateur C) est un compilateur C x86 complet développé par Fabrice Bellard. Sa dernière version (0.9.25, du 20 mai 2009) peut être utilisée sur Unix, Linux et Microsoft Windows. Il est distribué sous la licence publique générale limitée GNU (GNU LGPL).

Le C ANSI et la nouvelle norme ISO C99 sont particulièrement bien supportés par tcc ; il est de plus compatible avec de nombreuses extensions GNU C, comme l'assembly inline. Cependant, rendre tcc entièrement conforme pourrait le ralentir de manière significative : par exemple, il ne supporte pas les manipulations de tri-graphe (trigraph handling), des proper type, les vérifications d'expressions, ...

Sommaire

Capacités

  • Il est petit : il peut compiler et exécuter du code C n'importe où, par exemple d'une disquette de secours (environ 100 Kio pour l'exécutable TCC, incluant le préprocesseur et compilateur C, l'assembleur et l'éditeur de liens).
  • Il est rapide : il génère du code x86 moyennement optimisé. Il compile, assemble et lie environ 9 fois plus vite que gcc.
  • Le C ANSI et la norme ISO C99 sont bien supportés. De nombreuses extensions GNU C sont gérées.
  • Il inclut un système de vérification de la mémoire et de ses accès. Ce système peut être mixé au code utilisateur.
  • Il peut compiler et exécuter un source C sans édition de liens ou assemblage.
  • Sous Linux, il peut être utilisé comme un interpréteur C : il suffit d'ajouter '#!/usr/local/bin/tcc -run' à la première ligne du source C, et de l'exécuter directement depuis la console.
  • La bibliothèque libtcc permet à n'importe quel programme de générer et exécuter dynamiquement du code.
  • Sa compilation ne nécessite que quelques bibliothèques.

Sa licence permet à chacun de l'utiliser, modifier, et/ou redistribuer. Il peut être utilisé pour développer des logiciels open source ou propriétaire.

Histoire

tcc tient ses origines du OTCC [1] (Obsfucated Tiny C Compiler, Minuscule Compilateur C Assombri), un programme que Bellard a écrit pour gagner les IOCCC (Internation Obfuscated C Code Contest) en 2002. Depuis ce jour, il l'améliora et "dés-assombrit" le programme pour produire tcc.

Etat actuel

Le développement de tcc est ralenti car Fabrice Bellard est occupé à d'autres projets. Cependant des versions modifiées existent, comme la Landley's Mercurial branch, les Dave Dodge's collection of unofficial tcc patches, Debian and kfreebsd downstream patches, et les patchs gcc de grischka[2].

La version 0.9.23 est sujette à une vulnérabilité classée CVE-2006-0635 ou Open Source Vulnerability Database vulnerability 22956. Le rapport est que tcc "contient une faille qui peut avoir des complications quant à la sécurité du programme compilé avec ce dernier. Le compilateur ne peut retourner une valeur non signée de l'opérateur sizeof, ayant pour conséquence un débordement potentiel des entiers dans les objets qu'il compile." Cette faille a été corrigé dans le fork de Rob Landley puis incorporé dans la version officielle de tcc pour la version 0.9.24.

La version 0.9.25 est la première version à supporter le 64 bits.

TCC a une mailing list active, et la version courante de Bellard est accessible depuis git.

Utilisation

Les utilisations les plus connues de tcc sont :

  • TCCBOOT, un impressionnant programme où tcc charge et lance un noyau linux à partir des sources en environ 15 secondes sur un processeur Pentium 4 à 2.4 GHz. Le déroulement se passe en trois phases : TCCBOOT charge les sources du noyau Linux depuis le disque dur, place le code généré en mémoire et passe la main au noyau Linux. Pour ce faire, le processus de construction de Linux nécessite quelques modifications.
  • Il a été utilisé pour démontrer une défense contre les attaques de porte dérobée[3].
  • Cinpy est une bibliothèque Python qui permet d'implémenter du code C dans des modules Python. Ce code est compilé à chaud avec tcc.

Références

Voir aussi

Liens externes


Wikimedia Foundation. 2010.

Contenu soumis à la licence CC-BY-SA. Source : Article Tiny C Compiler de Wikipédia en français (auteurs)

Игры ⚽ Нужно решить контрольную?

Regardez d'autres dictionnaires:

  • Tiny C Compiler — Tiny C Compiler …   Википедия

  • Tiny C Compiler — Entwickler Fabrice Bellard Aktuelle Version 0.9.25 (20. Mai 2009) …   Deutsch Wikipedia

  • Tiny C Compiler — Infobox Software name = Tiny C Compiler logo = developer = Fabrice Bellard latest release version = 0.9.24 latest release date = release date|2008|04|01 programming language = C and Assembly operating system = Linux, Unix, Microsoft Windows genre …   Wikipedia

  • Tiny CC — Tiny C Compiler Краткая справка по командам Tiny C Compiler 0.9.23. Тип компилятор Разработчик Фабрис Беллар Написана на C и язык ассемблера …   Википедия

  • Tiny — may refer to:* Tiny (car), a British cyclecar manufactured by Nanson, Barker Co at Esholt, Yorkshire between 1912 and 1915 * Tiny, Ontario, a township in south central Ontario, CanadaPeople: * Tiny Tim (musician) (1932 1996), American musician *… …   Wikipedia

  • Tiny programming language — Tiny is an extremely simple programming language used in computer science courses to teach compiler construction techniques to students. The language itself is so basic that it only includes reading of integer numbers, addition and subtraction… …   Wikipedia

  • TCC — Tiny C Compiler Краткая справка по командам Tiny C Compiler 0.9.23. Тип компилятор Разработчик Фабрис Беллар Написана на C и язык ассемблера …   Википедия

  • TCc — Tiny C Compiler Краткая справка по командам Tiny C Compiler 0.9.23. Тип компилятор Разработчик Фабрис Беллар Написана на C и язык ассемблера …   Википедия

  • TinyC — Tiny C Compiler Краткая справка по командам Tiny C Compiler 0.9.23. Тип компилятор Разработчик Фабрис Беллар Написана на C и язык ассемблера …   Википедия

  • TinyCC — Tiny C Compiler Краткая справка по командам Tiny C Compiler 0.9.23. Тип компилятор Разработчик Фабрис Беллар Написана на C и язык ассемблера …   Википедия

Share the article and excerpts

Direct link
Do a right-click on the link above
and select “Copy Link”