Tiny C-kompilator

Den aktuella versionen av sidan har ännu inte granskats av erfarna bidragsgivare och kan skilja sig väsentligt från versionen som granskades den 18 november 2018; kontroller kräver 8 redigeringar .
Tiny C-kompilator

Sorts kompilator
Författare Fabrice Bellard [1]
Utvecklaren Fabrice Bellard
Skrivet i C och assemblerspråk
Operativ system Linux , Microsoft Windows , KolibriOS
Första upplagan 2002 [1]
Hårdvaruplattform x86 , ARM och x86_64
senaste versionen 0.9.27 (17 december 2017)
Licens GNU LGPL
Hemsida bellard.org/tcc/

Tiny C Compiler ( Eng.  Tiny C Compiler  - "tiny C compiler"), eller TinyCC , eller TCC  - C - kompilator för x86- plattformen .

Fungerar i OS Linux , KolibriOS [2] , Microsoft Windows . Det finns även versioner för ARM , TMS320C67xx . Distribueras under GNU LGPL -licensen .

Funktioner

#!/usr/local/bin/tcc -run [3]

Dessutom tillåter närvaron av biblioteket libtccdynamisk kodgenerering. Med detta bibliotek kan användaren till exempel kompilera en sträng som innehåller ett C-program och sedan komma åt valfri global symbol (variabel eller funktion) definierad i programmet. [fyra]

Kompatibilitet

TCC stöder inte bara ANSI C- standarden , utan de flesta av den nya ISO C99-standarden och många GNU C-tillägg , inklusive montering inline. TCC har också sina egna tillägg, såsom en representation av tal i binärt format ( 0b101istället för 5), samt ett fördefinierat makro __TINYC__som kan användas för att avgöra om TCC används. [åtta]

Utvecklingshistorik

TCC utvecklades ursprungligen för Linux OS , men från och med version 0.9.23 ( 17 juni 2005 ) fungerar det även i Microsoft Windows OS .

Den första versionen av TCC utvecklades som Obfuscated Tiny C Compiler (OTCC). OTCC är ett program skrivet av Fabrice Bellard för att delta i International Obfuscated C Code Contest (IOCCC) 2002 [9] (på tävlingens officiella hemsida är Fabrice Bellard med OTCC-programmet listad bland vinnarna av tävlingen för 2001 [10] .) Sedan dess har Bellar utökat programmets funktionalitet avsevärt och gjort det mer begripligt.

Nuvarande tillstånd

För tillfället fortsätter TCC-projektet att utvecklas. Det finns en aktiv e-postlista, och den aktuella versionen från Fabrice Bellard är tillgänglig via CVS . Den officiella utvecklingen av TCC har dock saktat ner på grund av Bellars sysselsättning med andra projekt. För tillfället (april 2012) hänger ett meddelande på utvecklarens webbplats att han inte längre är engagerad i kompilatorstöd.

Rob Landley, med hjälp av Mercurial SCM , har skapat en version av TCC som innehåller olika tredjepartspatchar.

Utöver de som nämnts ovan finns det andra TCC-modifieringar och patchar, såsom Dave Dodges inofficiella patchsamling , Debian- och kfreebsd -patchar och grischkas GCC - patchar.

I version TCC 0.9.23 upptäcktes en sårbarhet som fick numren CVE-2006-0635 [11] och sårbarhet i Open Source Vulnerability Database 22956 [12] . Rapporten angav att TCC "innehåller en bugg som kan orsaka säkerhetsproblem i program som kompileras med den. Kompilatorn kan inte returnera ett osignerat operatorvärde sizeof, vilket kan leda till heltalsspill i kompilerade objekt." Denna sårbarhet stängdes i version 0.9.24.

Se även

Baserat på TCC har starthanteraren TCCBOOT (TinyCC Boot Loader)  (engelska) skapats , som låter dig kompilera och starta upp Linux-kärnan direkt från källan.

Länkar

Anteckningar

  1. 1 2 Obfuscated Tiny C-kompilator
  2. Tiny C Compiler - Visa ämne Arkiverad 12 augusti 2014 på Wayback Machine [1]
  3. Tiny C Compiler Reference Documentation, 2.1 Snabbstart Arkiverad 27 september 2011 på Wayback Machine  
  4. Tiny C Compiler Reference Documentation, 7. Libtcc-biblioteket Arkiverat 27 september 2011 på Wayback Machine  
  5. Tiny C Compiler Arkiverad 8 april 2011 på Wayback Machine  
  6. Tiny C Compiler Compilation Speed ​​​​arkiverad 8 april 2011 på Wayback Machine  
  7. Tiny C Compiler Reference Documentation, 8.8 Optimering gjord Arkiverad 27 september 2011 på Wayback Machine  
  8. Tiny C Compiler Reference Documentation, 3.4 TinyCC-tillägg Arkiverad 27 september 2011 på Wayback Machine  
  9. Obfuscated Tiny C-kompilator  
  10. Tidigare IOCCC-vinnare (nedlänk) . Tillträdesdatum: 13 maj 2009. Arkiverad från originalet 22 oktober 2013. 
  11. CVE-2006-0635 . Hämtad 13 maj 2009. Arkiverad från originalet 3 mars 2016.
  12. 22956: Tiny C-kompilatorstorlek på beräkningssvaghet  (nedlänk)