Tiny CC

Tiny CC
Tiny C Compiler
Краткая справка по командам Tiny C Compiler 0.9.23.
Тип компилятор
Разработчик Фабрис Беллар
Написана на C и язык ассемблера
ОС GNU/Linux, Microsoft Windows
Версия 0.9.25 — 20 мая 2009
Лицензия GNU LGPL
Сайт http://bellard.org/tcc/

Tiny C Compiler (англ. Tiny C Compiler — крошечный компилятор Си), или TinyCC, или TCCкомпилятор C для платформы ОС GNU/Linux и Microsoft Windows. Существуют также версии для 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 первоначально разрабатывался для ОС GNU/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 продолжает развиваться. Существует активный список рассылки, а текущая версия от Фабриса Беллара доступна через

Rob Landley, используя , создал версию 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 CC" в других словарях:

  • 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 — (1915) Der Tiny war ein britisches Cyclecar, das 1913 1915 von Nanson Barker Company Ltd. in Esholt (West Yorkshire) hergestellt wurde. 1913 erschien ein 8 hp Modell mit wassergekühltem V2 Motor, der einen Hubraum von 964 cm³ besaß. Der… …   Deutsch Wikipedia

  • Tiny — Ti ny, a. [Compar. {Tinier}; superl. {Tiniest}.] [Probably fr. tine, teen, trouble, distress, vexation.] Very small; little; puny. [1913 Webster] When that I was and a little tiny boy. Shak. [1913 Webster] …   The Collaborative International Dictionary of English

  • tiny — index impalpable, minimal, remote (small), tenuous Burton s Legal Thesaurus. William C. Burton. 2006 …   Law dictionary

  • tiny — (adj.) c.1400, tyne very small, perhaps from TINE (Cf. tine) …   Etymology dictionary

  • tiny — *minute, miniature, diminutive, wee, *small, little, teeny, weeny …   New Dictionary of Synonyms

  • tiny — [adj] very small bitsy*, bitty, diminutive, infinitesimal, insignificant, itsy bitsy*, ittybitty*, Lilliputian, little, microscopic, midget, mini*, miniature, minikin, minimum, minuscular, minuscule, minute, negligible, pee wee*, petite, pint… …   New thesaurus

  • tiny — ► ADJECTIVE (tinier, tiniest) ▪ very small. ► NOUN (pl. tinies) informal ▪ a very young child. DERIVATIVES tinily adverb tininess noun. ORIGIN …   English terms dictionary

  • tiny — [tī′nē] adj. tinier, tiniest [< ME n. tine, a little (something)] very small; diminutive SYN. SMALL …   English World dictionary

  • tiny — 01. Their new Chihuahua puppy is really [tiny]. 02. Monaco is a [tiny] country, probably the smallest in the world. 03. Gordie has a [tiny] brain in his pointed head. 04. Junko s apartment in Tokyo was [tiny], but it cost her almost $1,000 a… …   Grammatical examples in English


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

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