Tiny C Compiler
Tiny C Compiler (též TCC, tCc, TinyCC) je v informatice překladač jazyka C pro platformy x86 a x86-64. Původním autorem je Fabrice Bellard. Byl navržen pro starší (pomalejší) počítače s omezeným diskovým prostorem (například záchranné disky). Od verze 0.9.23 (17. července 2005) obsahuje podporu pro operační systém Microsoft Windows. TCC je šířen pod licencí GNU Lesser General Public License (LGPL). Dokumentace tvrdí, že TCC plně podporuje ANSI C (C89/90),[1] mnoho vlastností ISO C99 a též mnoho GNU rozšíření (včetně vkládaného assembleru). VlastnostiVlastnosti odlišující TCC od jiných běžných překladačů jazyka C:
Ukázka automaticky kompilovaného programuNásledující kód ukazuje Hello world s počátečním shebang řádkem. Bude-li mít takový soubor práva na spuštění (a bude-li v /usr/bin/tcc opravdu TCC), bude možno takový soubor přímo spustit. #!/usr/bin/tcc -run
#include <stdio.h>
int main(int argc, char ** argv)
{
puts("Hello, world!");
return 0;
}
Rychlost zkompilovaných programůPřestože samotný překladač je velice rychlý a vytváří malé spustitelné soubory, je tato rychlost vykoupena rychlostí přeložených programů (kompromis mezi složitostí/velikostí překladače a rychlostí výsledného kódu). TCC provádí několik druhů optimalizací, například propagaci konstant u všech operací. Násobení a dělení jsou ve vhodných případech nahrazeny posuvy. Dále provádí jednoduchou alokaci registrů pro zrychlení přístupu k často používaným proměnným. Obecně je ovšem důraz kladen především na rychlost překladu a velikost výsledného kódu. TCC zpracuje kód v jednom průchodu, nemůže tedy použít většinu optimalizací, které jinak aplikují ostatní překladače. Každý příkaz (výraz) se překládá odděleně, na jeho konci se registry vloží na zásobník a potom musí být znovu ze zásobníku načteny i v případě, že následující příkaz používá tyto hodnoty. Dále TCC nevyužívá všech dostupných registrů (například na x86 nepoužívá ebx, esi a edi, protože jejich hodnota musí být zachována mezi jednotlivými voláními funkci).[2] Následují dva pokusné benchmarky:
ReferenceV tomto článku byl použit překlad textu z článku Tiny C Compiler na anglické Wikipedii.
Externí odkazy |
Portal di Ensiklopedia Dunia