Tiny C Compiler

Tiny C Compiler
Tiny C Compiler
Tiny C Compiler 0.9.23 Windows help en.png
Краткая справка по командам Tiny C Compiler 0.9.23.
Тип

компилятор

Разработчик

Фабрис Беллар

Написана на

C и язык ассемблера

Операционная система

Linux, Microsoft Windows

Последняя версия

0.9.25 (20 мая 2009)

Лицензия

GNU LGPL

Сайт

http://bellard.org/tcc/

Tiny C Compiler (англ. Tiny C Compiler — крошечный компилятор Си), или TinyCC, или TCCкомпилятор C для платформы x86.

Работает в ОС Linux и Microsoft Windows. Существуют также версии для ARM и TMS320C67xx. Распространяется по лицензии GNU LGPL.

Содержание

Особенности

  • От других распространённых компиляторов TCC отличается прежде всего тем, что может исполнять скомпилированную им программу, то есть выполнять функцию интерпретатора. Данное свойство позволяет использовать язык Си в качестве скриптового языка. Например, для того, чтобы запустить программу на Си в качестве скрипта в оболочке Linux, достаточно вставить в начало текста программы строку:
#!/usr/local/bin/tcc -run [1]

Также, наличие библиотеки libtcc позволяет осуществлять динамическую генерацию кода. С помощью этой библиотеки пользователь, например, может скомпилировать строку, содержащую программу на Си, после чего получить доступ к любому глобальному символу (переменной или функции), определенному в программе.[2]

  • Высокая скорость компиляции. Например, TCC примерно в 9 раз быстрее GCC.[4]
  • Возможность формировать код с контролем границ массивов, который можно беспрепятственно использовать вместе с обычным кодом.
  • Возможность напрямую использовать любую динамическую библиотеку.
  • Оптимизация кода ограничена вычислением константных выражений на этапе компиляции, заменой операций умножения и деления операциями сдвига где это возможно, а также некоторыми другими действиями. Оптимизация переходов не производится, так как это потребовало бы организацию промежуточного кода в более абстрактном виде.[5]

Совместимость

TCC поддерживает не только стандарт ANSI C, но и большую часть нового стандарта ISO C99 и многие расширения GNU C, включая ассемблерные вставки. TCC также имеет собственные расширения, например, представление чисел в двоичном коде (0b101 вместо 5).[6]

История развития

TCC первоначально разрабатывался для ОС Linux, однако начиная с версии 0.9.23 (17 июня 2005) работает и в ОС Microsoft Windows.

Первый вариант TCC был разработан как Obfuscated Tiny C Compiler (OTCC). OTCC — программа, написанная Фабрисом Белларом для участия в конкурсе International Obfuscated C Code Contest (IOCCC) в 2002 году[7]. (На официальном сайте конкурса Фабрис Беллар с программой OTCC числится среди победителей конкурса за 2001 год[8].) С того времени Беллар значительно расширил функционал программы и сделал её более понятной.

Текущее состояние

На данный момент проект TCC продолжает развиваться. Существует активный список рассылки, а текущая версия от Фабриса Беллара доступна через CVS. Однако, официальная разработка TCC замедлилась в связи с занятостью Беллара в других проектах. На данный момент апрель 2012 на сайте разработчика висит сообщение, что он больше не занимается поддержкой компилятора.

Rob Landley, используя Mercurial SCM, создал версию TCC, включающую различные патчи от сторонних разработчиков.

Помимо обозначенных выше существуют и другие модификации TCC и патчи для него, такие как, неофициальная коллекция патчей от Dave Dodge, патчи от Debian и kfreebsd, а также патчи для GCC от grischka.

В версии TCC 0.9.23 была обнаружена уязвимость, получившая номера CVE-2006-0635Б[9] и Open Source Vulnerability Database vulnerability 22956[10]. В отчёте было сказано, что TCC «содержит ошибку, способную вызвать проблемы с безопасностью в программах скомпилированных с его помощью. Компилятор не способен возвращать беззнаковое значение оператора sizeof, что может привести к переполнениям целых чисел в скомпилированных объектах». Эта уязвимость была закрыта в версии 0.9.24.

См. также

На основе TCC создан загрузчик TCCBOOT (TinyCC Boot Loader)  (англ.), позволяющий компилировать и загружать ядро Linux непосредственно из исходных текстов.

Ссылки

Примечания


Wikimedia Foundation. 2010.

Игры ⚽ Поможем решить контрольную работу

Полезное


Смотреть что такое "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 C Compiler — 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… …   Wikipédia en Français

  • 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 и язык ассемблера …   Википедия


Поделиться ссылкой на выделенное

Прямая ссылка:
Нажмите правой клавишей мыши и выберите «Копировать ссылку»