Hlavní navigace

LLVM vyvíjí nový linker lld

Projekt LLVM několik měsíců vyvíjel podporu ELF v linkeru lld. Včera bylo na jejich blogu zveřejněno, že lld už umí linkovat LLVM, Clang a projde všechny testy na x86–64 Linuxu i FreeBSD s rychlostí očekávanou od projektu LLVM. ELF část lld je…

Jan Fikar

1. 12. 2015 8:36 |

Instrukční sady procesorových jader s otevřenou architekturou RISC-V (dokončení)

Dnes dokončíme popis instrukčních sad rozšiřujících základní 32bitovou instrukční sadu RV32I. Seznámíme se s rozšířením „D“ (operace s čísly double), „Q“ (čísla se čtyřnásobnou přesností), „A“ (atomické operace), 64bitovou instrukční sadou i s rozšířením „C“ (komprimované instrukce).

Pavel Tišnovský

26. 11. 2015 0:00
| 8

Google vydal Android Studio 2.0 Preview

Google včera vydal preview verzi vývojového prostředí Android Studio 2.0, založeného na IntelliJ IDEA. Mezi nové vlastnosti patří GPU profiler, který umožní vývojářům prohlížet graficky náročné aplikace po jednotlivých snímcích. Dále přibylo…

Jan Fikar

24. 11. 2015 11:12 |

Google CUDA kompiler GPUCC

Google pracuje na CUDA open source kompileru GPUCC, postavenému na LLVM. Přitom má vytvářet lepší kód než kompiler NVCC od společnosti NVIDIA. GPUCC je až o 51% rychlejší než NVCC v interních testech, dosahuje podobných výsledků v open source…

Jan Fikar

17. 11. 2015 10:03 |
| 5

Rozšíření instrukční sady procesorových jader s otevřenou architekturou RISC-V

V dnešní části článku o otevřené architektuře RISCových jader RISC-V nejprve dokončíme popis základní instrukční sady nazvané RV32I a posléze se zaměříme na některá důležitá rozšíření této instrukční sady. Bude se jednat například o instrukce pro násobení a dělení a samozřejmě i o instrukce matematického koprocesoru.

Pavel Tišnovský

12. 11. 2015 0:00

Instrukční sada procesorových jader s otevřenou architekturou RISC-V

Navážeme na předchozí článek, v němž jsme se seznámili se základními vlastnosti otevřených RISCových procesorových jader OpenRISC a RISC-V. Popíšeme si instrukční sadu RV32I, která je určena pro 32bitové čipy s jádry RISC-V. Je navržena velmi elegantně a navíc její tvůrci dobře vysvětlují všechna svá rozhodnutí.

Pavel Tišnovský

5. 11. 2015 0:00

DDMD: kompilátor jazyka D v jazyce D

Byla vydána nová verze (2.069.0) kompilátoru pro programovací jazyk D. Nejzajímavější novinkou v tomto referenčním kompilátoru je přepsáni frontend části z jazyka C++ do D. Dále byla přidána podpora pro spolupráci s kódem napsaném v jazyce…

Kozzi

4. 11. 2015 19:12 |

Otevřené RISCové architektury OpenRISC a RISC-V

Ve světě open-source hardware (OSH) se již poměrně dlouho rozvíjí dva velmi zajímavé projekty. Jedná se o otevřené RISCové architektury nazvané OpenRISC a RISC-V. Dnes se seznámíme jak s prvním zmíněným projektem používajícím licence GPL a LGPL, tak i s projektem RISC-V, který je mnohem promyšlenější.

Pavel Tišnovský

29. 10. 2015 0:00

Použití mikrořadičů s jádrem Cortex-M na reálných čipech

Na předchozí články, v nichž jsme si popsali základní vlastnosti jader Cortex-M, navážeme článkem dnešním, v němž se budeme věnovat stručnému popisu vlastností některých reálných čipů, které tato jádra obsahují. Začneme samozřejmě těmi čipy, v nichž je použito jádro Cortex-M0 či novější Cortex-M0+.

Pavel Tišnovský

23. 10. 2015 0:00
| 6

Nejvýkonnější MCU aneb architektura mikrořadičů s jádry ARM Cortex-M7

Třetí článek o mikrořadičích s architekturou ARM je věnován nejvýkonnějším jádrům, která jsou v současnosti v této oblasti nabízena. Jedná se o jádra s názvem Cortex-M7. Čipy s těmito jádry se v mnoha ohledech odlišují od již popsaných čipů založených na Cortex-M0, Cortex-M0+ a Cortex-M3.

Pavel Tišnovský

15. 10. 2015 9:30

Architektura mikrořadičů s jádry ARM Cortex-M3

Na článek z předchozího týdne, v němž jsme si popsali nejmenší jádra ARM s názvem Cortex-M0 a Cortex-M0+, navážeme článkem dnešním, který je věnován výkonnějším mikroprocesorovým a mikrořadičovým jádrům. Ta nesou označení Cortex-M3 a nalezneme je například v čipu, který pohání populární Arduino Due.

Pavel Tišnovský

6. 10. 2015 0:00

Architektura mikrořadičů s jádry ARM Cortex-M0 a ARM Cortex-M0+

Přibližně před pěti lety došlo na trhu s mikrořadiči k poměrně významné události: obrat z prodejů 32bitových mikrořadičů přesáhl obrat dosahovaný u mikrořadičů osmibitových (PIC, řada 51, Atmel AVR). Nezanedbatelný podíl zde mají jádra ARM Cortex-M0 a Cortex-M0+, jejichž architekturu si dnes popíšeme.

Pavel Tišnovský

1. 10. 2015 0:00

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

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 |
| 1

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
| 5

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
| 2

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
| 4

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 |
| 9

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
| 4

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
| 3

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

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

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

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

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
| 4

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
| 4

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

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 |
| 2