Hlavní navigace

Kompilery a procesory

Vše pro to, abyste zkompilovali svá dílka do spustitelné podoby.

Interpretry, překladače, JIT překladače a transpřekladače programovacího jazyka Lua

Programovací jazyk Lua je standardně překládán do bajtkódu, který je následně interpretován, podobně jako je tomu u většiny dalších skriptovacích jazyků. Ve skutečnosti však mají vývojáři využívající tento programovací jazyk k dispozici i další možnosti: transpřekladače či JIT překladače.

Pavel Tišnovský

28. 7. 2015 0:00
Doba čtení: 28 minut

Vyšlo GCC 5.2.0

GNU projekt vydal novou verzi kompilátoru GCC s označením 5.2.0, který obsahuje frontendy pro jazyky C, C++, Fortran, Objective-C, Java, Ada, Go a další. Novinek je poměrně hodně, kompletní seznam najdete v changelogu: výchozím režimem pro C je…

Petr Krčmář

20. 7. 2015 10:45 |

GCC (GNU Compiler Collection) 5.1.0

Dne 22. dubna vydal release maintainer projektu GCC (GNU Compiler Collection) Jakub Jelínek stabilní verzi 5.1, poslední stabilní verze vyšla před rokem. Dle nového číslování byla verze 5.0.0 experimentální.  GCC 5 přináší mnoho nových…

Michal Strnad

23. 4. 2015 7:00 |

LuaJIT – Just in Time překladač pro programovací jazyk Lua (12 – překlad operací s reálnými čísly)

V programovacím jazyku Lua jsou základním numerickým datovým typem čísla s plovoucí řádovou čárkou s dvojitou přesností (IEEE 754) známé v dalších jazycích pod názvem double. Pokud se s tímto datovým typem ve zdrojových kódech pracuje, musí LuaJIT při překladu vygenerovat příslušné strojové instrukce.

Pavel Tišnovský

15. 1. 2015 0:00
Doba čtení: 17 minut

LuaJIT – Just in Time překladač pro programovací jazyk Lua (11 – JIT překlad do nativního kódu procesorů s architekturami x86 a ARM)

Třetím krokem JIT překladu prováděného LuaJITem je transformace pseudoinstrukcí do nativního kódu mikroprocesoru, na němž je LuaJIT spuštěn. LuaJIT podporuje překlad s využitím instrukčních sad mikroprocesorů Intel i AMD (32 bit, 64 bit), ARM (prozatím 32 bit), MIPS a PowerPC. Touto problematikou se budeme zabývat dnes.

Pavel Tišnovský

8. 1. 2015 0:00
Doba čtení: 18 minut

LuaJIT – Just in Time překladač pro programovací jazyk Lua (10 – JIT překlad do nativního kódu)

V předchozích dvou článcích jsme se zabývali především způsobem detekce stop (traces) v bajtkódu aplikací naprogramovaných v jazyku Lua. Dnes se budeme zabývat druhým a částečně i třetím krokem, který musí trasovací JIT překladač provést. Jedná se o generování pseudoinstrukcí a následně i vytváření nativního kódu.

Pavel Tišnovský

16. 12. 2014 0:00
Doba čtení: 21 minut

Ruby kompilované pomocí Clang je výrazně rychlejší

Bráulio Bhavamitra na svém blogu zveřejnil výsledky svého experimentu s překladem Ruby pomocí Clang. Interpreter jazyka zkompilovaný pomocí Clang 3.5 je o 8 % rychlejší než při použití GCC 4.9. Zajímavější je srovnání výsledků se starším GCC…

Petr Krčmář

15. 12. 2014 9:42 |

LuaJIT – Just in Time překladač pro programovací jazyk Lua (9 – další vlastnosti trasovacího JITu)

V další části seriálu o překladači LuaJIT budeme pokračovat v popisu funkce trasovacího překladače. Minule jsme si ukázali, jak trasovací překladač dokáže detekovat často používané programové smyčky, dnes se podíváme na způsob detekce větví ve smyčkách a detekci funkcí volaných s velkou frekvencí.

Pavel Tišnovský

11. 12. 2014 0:00
Doba čtení: 19 minut

LuaJIT – Just in Time překladač pro programovací jazyk Lua (8 – základní vlastnosti trasovacího JITu)

V dalším článku o překladači LuaJIT si řekneme základní informace o činnosti trasovacího JITu používaného pro detekci těch částí kódu aplikace, které se budou v runtime překládat do nativního (strojového) kódu. Trasovací JIT tvoří zajímavou a dnes stále populárnější skupinu just-in-time překladačů.

Pavel Tišnovský

2. 12. 2014 0:00
Doba čtení: 14 minut

LuaJIT – Just in Time překladač pro programovací jazyk Lua (7 – dokončení popisu mezijazyka LuaJITu)

V sedmé části článku o Just in Time překladači LuaJIT dokončíme popis mezijazyka, který v LuaJITu plní funkci bajtkódu. Minule jsme se zmínili o způsobu překladu programových smyček, dnes na toto téma navážeme a popíšeme si způsob překladu smyčky for-each a následně pak práci s uzávěry (closures).

Pavel Tišnovský

25. 11. 2014 0:00
Doba čtení: 29 minut

LuaJIT – Just in Time překladač pro programovací jazyk Lua (6 – překlad programových smyček do mezijazyka LuaJITu)

V šesté části článku o Just in Time překladači nazvaném LuaJIT si vysvětlíme, jakým způsobem se překládají programové smyčky typu while, repeat-until i smyčky typu for-each používané jak při procházení běžných polí (s prvky adresovanými s využitím indexů), tak i při procházení všemi prvky asociativních polí.

Pavel Tišnovský

18. 11. 2014 0:00
Doba čtení: 16 minut

LuaJIT – Just in Time překladač pro programovací jazyk Lua (5 – tabulky a pole)

V páté části článku o Just in Time překladači nazvaném LuaJIT se budeme zabývat způsobem překladu programů pracujících s tabulkami. Ukážeme si způsob tvorby jednorozměrných i dvourozměrných tabulek a taktéž přístup k prvkům tabulek, a to jak s využitím celočíselných indexů, tak i s použitím klíčů.

Pavel Tišnovský

11. 11. 2014 0:00
Doba čtení: 21 minut

GCC 5 kompiluje rychle, pořád ale zaostává za Clangem

Phoronix porovnal aktuální překladače v připravované distribuci Fedora 21. Na startovní čáru byly postaveny GCC 4.9.2, LLVM Clang 3.4.2 a GCC 5.0. Vypadá to, že nová řada GCC 5 přinese ve většině případů výrazné zrychlení procesu kompilace proti…

Petr Krčmář

10. 11. 2014 11:12 |

LuaJIT – Just in Time překladač pro programovací jazyk Lua (4)

Čtvrtá část článku o Just in Time překladači nazvaném LuaJIT bude věnována problematice volání funkcí, předávání parametrů do funkcí a taktéž způsobu vracení hodnoty či většího množství hodnot z volaných funkcí. Seznámíme se i s dalšími instrukcemi mezijazyka využívaného LuaJITem.

Pavel Tišnovský

4. 11. 2014 0:00
Doba čtení: 28 minut

LuaJIT – Just in Time překladač pro programovací jazyk Lua (3)

Ve třetím článku o Just in Time překladači LuaJIT si popíšeme všechny instrukce mezijazyka (IR) implementující podmínky a relační operátory. Jedná se o rozšíření tématu, kterému jsme se věnovali minule, dnes se však budeme zabývat mj. i porovnáním obsahu proměnných s řetězci či se speciálními hodnotami true, false a nil.

Pavel Tišnovský

28. 10. 2014 0:00
Doba čtení: 23 minut

LuaJIT – Just in Time překladač pro programovací jazyk Lua (2)

Ve druhé části článku o Just in Time překladači LuaJIT si popíšeme způsob překladu aritmetických výrazů do mezijazyka LuaJITu. Kromě toho se taktéž budeme zabývat instrukcemi IR, které slouží pro implementaci podmínek a skoků. Tyto instrukce jsou použity jak při větvení, tak i při překladu programových smyček.

Pavel Tišnovský

21. 10. 2014 0:00
Doba čtení: 15 minut

LuaJIT – Just in Time překladač pro programovací jazyk Lua

Pro doplnění informací, které jsme si doposud v seriálu o jazyce Java (JVM) uvedli, si v několika článcích popíšeme velmi zajímavý projekt LuaJIT. Již z názvu tohoto projektu je zřejmé, že se jedná o „konkurenční “Just in Time překladač, který je možné použít společně s programovacím jazykem Lua.

Pavel Tišnovský

14. 10. 2014 0:00
Doba čtení: 13 minut

LLVM 3.5 přináší vylepšení C++1y a podpory 64-bit ARM

Vyšlo LLVM 3.5 společně s překladačem Clang 3.5. Přináší mnoho zlepšení kompilátoru včetně sjednoceného backendu pro 64-bit ARM, vylepšení jazyka C++1y a C++1z, možnost sestavení sebe sama v Linuxu a FreeBSD na SPARC64 a mnoho dalšího. Stahovat můžete z llvm.org.

Petr Krčmář

8. 9. 2014 13:16 |

Porovnání překladačů Intel C++, GNU C++ a LLVM Clang

Vývojář Jeff Cogswell na Slashdotu porovnává tři překladače C++: Intel C++, GNU C++ a LLVM Clang. Snaží se při tom vyřadit všechny vnější vlivy, které by mohly výsledky rozkolísat či znehodnotit. Nakonec dochází k poměrně jasnému závěru: „Zajímavé…

Petr Krčmář

6. 11. 2013 13:14 |

Vyšlo GCC 4.8.2

Dne 16. října vydal release maintainer projektu GCC Jakub Jelínek druhou opravnou verzi GCC; první opravná verze 4.8.1 byla vydána přibližně před pěti měsíci. Nová verze je dostupná na veřejných FTP serverech. Jelikož se jedná pouze o opravné…

Redakce

16. 10. 2013 17:53 |

Má být kompilátor energeticky úsporný?

V mailové konferenci projektu LLVM se diskutuje o tom, zda by neměl kompilátor nabízet zvláštní režim, ve kterém bude generovat energeticky úspornější binárky. Otázkou je, jestli to má vůbec smysl řešit nebo je lepší prostě aplikaci zkompilovat…

Petr Krčmář

17. 4. 2013 12:16 |

GCC 4.7.3 opravuje více než stovku chyb

Pokud se pořád držíte starší řady GCC, potěší vás zpráva, že vyšla nová verze 4.7.3, která opravuje více než sto chyb. Oficiálně bylo od předchozího vydání opraveno 118 chyb.

Petr Krčmář

12. 4. 2013 13:50 |

Distcc: kompilujte distribuovaně a rychle

Sestavování binárních souborů ze zdrojových kódů může být někdy zdlouhavé. Dnes si představíme nástroj, pomocí kterého lze kompilaci paralelně zpracovávat na více počítačích a tím ušetřit spoustu času. To se může hodit nejen vývojářům, ale i uživatelům distribucí, které nepoužívají binární balíčky.

Ondřej Caletka

24. 1. 2013 0:00
Doba čtení: 8 minut

GCC také diskutuje ukončení podpory procesorů 386

Po té co byla z linuxového jádra odebrána podpora pro procesory 386 začala i mezi vývojáři GCC diskuze nad tímto tématem. Navrhovaná varianta je začít podporovat již pouze i486 a vyšší. Došlo by tak k pročištění většiny knihoven, které dnes musí…

Kamil Pošvic

14. 12. 2012 12:48 |

Vývoj nových funkcí do Gcc 4.8 je u konce

Vývoj nové verze překladače Gcc 4.8 se přesunul do druhé fáze. Všechny novinky jsou už hotové a teď už se bude jen ladit a budou se odstraňovat případné chyby. Vydání je plánováno na březen nebo duben příštího roku, tedy přesně rok po vydání…

Petr Krčmář

7. 11. 2012 10:41 |

GCC Explorer: interaktivní kompilace

Matt Godbolt na svém blogu představil jeho nový nástroj pro analýzu výstupu GCC kompilátoru. Jde o webovou aplikaci, kde do levé části píšete svůj C/C++ kód a v druhé části vidíte co vyleze z GCC. Kompilátoru můžete dávat různé parametry a dokonce…

Adam Štrauch

28. 5. 2012 9:16 |

Jednotky pro správu paměti (MMU) na mikroprocesorech ARM

Dnes se budeme zabývat popisem jednotek pro správu paměti (Memory Management Unit – MMU) implementovaných na některých mikroprocesorech s architekturou ARM. MMU je samozřejmě důležitou součástí těchto procesorů, protože zajišťuje ochranu paměti i využití virtuálního adresního prostoru.

Pavel Tišnovský

22. 5. 2012 0:00
Doba čtení: 18 minut

Podpora instrukcí typu SIMD na mikroprocesorech ARM

V dnešní části seriálu o architekturách počítačů se budeme opět zabývat popisem mikroprocesorů patřících do rodiny ARM. Zaměříme se na popis SIMD instrukcí, které sice původně nebyly součástí mikroprocesorů ARM, ale postupně začaly být implementovány jako volitelná rozšíření do některých mikroprocesorových jader.

Pavel Tišnovský

15. 5. 2012 0:00
Doba čtení: 20 minut

FreeBSD 10 plánuje přejít na Clang jako výchozí kompiler

Podle zprávy FreeBSD Status Report za první čtvrtletí tohoto roku se zdá, že LLVM (Low Level Virtual Machine) kompiler Clang rychle nahrazuje GCC v tomto populárním BSD systému. Jedním z cílů pro FreeBSD 10 je nahradit GCC a používat Clang jako…

Kamil Pošvic

14. 5. 2012 15:08 |

Mikroprocesory ARM a architektura VFP (Vector Floating Point)

V dnešní části seriálu o architekturách počítačů se již podruhé budeme zabývat způsobem zpracování numerických hodnot s plovoucí řádovou čárkou na mikroprocesorech ARM. Minule jsme si popsali technologii FPA (Floating Point Accelerator), dnes se zaměříme na alternativní technologii VFP (Vector Floating Point).

Pavel Tišnovský

24. 4. 2012 0:00
Doba čtení: 17 minut