Tiny C Compiler: differenze tra le versioni

Contenuto cancellato Contenuto aggiunto
LauBot (discussione | contributi)
m Bot: passaggio degli url da HTTP a HTTPS
m Corretto collegamento ipertestuale
 
(4 versioni intermedie di 3 utenti non mostrate)
Riga 15:
'''Tiny C Compiler''' (noto anche come '''TCC''', '''tCc''' o '''TinyCC''') è un [[compilatore]] [[C (linguaggio)|C]] per piattaforme [[x86]] e [[architettura ARM|ARM]] creato da [[Fabrice Bellard]] e distribuito sotto licenza [[GNU Lesser General Public License|LGPL]]. È un compilatore minimale, che si presta bene all'uso su sistemi lenti e con poche risorse di memoria e archiviazione. Nato per sistemi [[Unix-like]], con la versione 0.9.23 (17 giugno 2005) gli è stato aggiunto il supporto a [[Microsoft Windows|Windows]].
 
Secondo la documentazione, TCC implementa interamente lo standard [[ANSI C]] (C89/C90),<ref>[http://bellard.org/tcc/tcc-doc.html#SEC6 Tiny C Compiler Reference Documentation] accessed on 2008-08-07</ref> buona parte dello standard ISO [[C99 (linguaggio di programmazione)|C99]]<ref>According to the project's [http://repo.or.cz/w/tinycc.git/blob/HEAD:/TODO TODO list] complex types are the only missing C99 feature. Variable Length Arrays have been added in TCC 0.9.26</ref> e molte delle estensioni GNU C, tra le quali l'inserimento di [[Assembler inline|assembly inline]].
 
== Caratteristiche ==
Riga 36:
Tra gli impiegi di TCC:
* TCCBOOT,<ref>[http://bellard.org/tcc/tccboot.html TCCBOOT]</ref> che impiega TCC per caricare ed eseguire il [[kernel Linux]] da sorgenti. È una sorta di bootloader che legge i sorgenti da disco, scrive le corrispondenti istruzioni macchina in memoria e le esegue.
* TCC è stato usato per mostrare un meccanismo di difesa rispetto alla vulnerabilità Trusting Trust.<ref>Wheeler, David A. ''[http://www.dwheeler.com/trusting-trust Countering Trusting Trust through Diverse Double-Compiling] {{Webarchive|url=https://web.archive.org/web/20111008035532/http://www.dwheeler.com/trusting-trust |date=8 ottobre 2011 }}''. ACSAC.</ref>
* TCC è stato impiegato per compilare GCC, anche se allo scopo sono necessarie alcune patch.<ref>[https://lists.gnu.org/archive/html/tinycc-devel/2005-09/threads.html tinycc-devel (thread)]</ref>
* Cinpy<ref>[https://www.cs.tut.fi/~ask/cinpy/ Cinpy] {{webarchive|url=https://web.archive.org/web/20081120164629/http://www.cs.tut.fi/~ask/cinpy/ |data=20 novembre 2008 }}</ref> è una libreria [[Python]] che consente di implementare funzioni C nei moduli Python, che vengono compilate a runtime con TCC e rese richiamabili dal Python tramite la libreria ctypes.
 
== Storia ==
TCC è l'evoluzione di Obfuscated Tiny C Compiler (OTCC), un programma scritto da Bellard con il quale ha vinto l'[[International Obfuscated C Code Contest]] (IOCCC) del 2001 come ''Best abuse of the rules''.<ref>{{cita web|url=http://www.ioccc.org/years.html#2001_bellard|titolo=Previous IOCCC Winners|accesso=28 maggio 2016|urlarchivio=https://web.archive.org/web/20090409235720/http://www.ioccc.org/years.html#2001_bellard|dataarchivio=9 aprile 2009|urlmorto=sì}}</ref> Bellard ha in seguito esteso e de-offuscato il programma, ottenendo TCC.<ref>Bellard, Fabrice. [http://bellard.org/otcc/ Obfuscated Tiny C Compiler]</ref>
 
== Stato del progetto ==