|
Překladač podmnožiny jazyka Python
Falhar, Radek ; Křivka, Zbyněk (oponent) ; Kolář, Dušan (vedoucí práce)
Python je dynamicky typovaný, interpretovaný programovací jazyk. Díky dynamickému typovému systému je tedy obtížné jej zkompilovat do statického zdrojového kódu. Tedy kódu, kde je přesně dáno, jaké typy existují a jaká je jejich struktůra. Existuje několik způsobů jak tohoto dosáhnout a jedním z primárních je typová inference. Tento přístup se snaží určit struktura typů ze zdrojového kódu. V případě jazyka Python je však tento přístup obtížný, protože výsledný typový systém je velice komplexní a jazyk samotný není k typové inferenci navržen. V této práci jsem se zaměřil na identifikaci podmnožiny tohoto jazyka, aby byla možná typová inference při zachování co nejpřirozenějšího použití jazyka. Následně jsem implementoval překladač, který tuto podmnožinu přeloží do staticky typovaného jazyka, který pak lze přeložit do nativního kódu.
|
|
Překladač pro platformu EdkDSP
Baručák, Robert ; Dolíhal, Luděk (oponent) ; Masařík, Karel (vedoucí práce)
Cílem bakalářské práce bylo vytvoření překladového systému pro platformu EdkDSP. Prezentovány jsou dva odlišné přístupy ke konstrukci překladového systému určeného pro multiprocesorovou platformu. Práce je založená na překladačové infrastruktuře LLVM. Výsledkem jsou dvě funkční verze překladového systému, které generují kód využívající všechny hardwarové prostředky poskytované cílovou platformou. Vytvořená řešení mají sadu omezení, která jsou diskutována v textu práce.
|
|
Model překladače
Jílek, Roman ; Fiedler, Petr (oponent) ; Štohl, Radek (vedoucí práce)
Obsahem této diplomové práce je popis programovatelných automatů a průmyslové sběrnice AS-Interface, montáž komponent na konstrukci modelu překladače a programování modelu. První část práce je soustředěna na popis programovatelných automatů, jejich charakterizaci a rozdělení a na průmyslovou sběrnici AS-Interface a její součásti. Druhá část popisuje komponenty a jejich umístění na modelu. Třetí část je zaměřena na software. Čtvrtá popisuje programování, pátá vizualizaci a poslední pak obsahuje zadání laboratorní úlohy.
|
| |
|
Kompilátor jazyka C pro VLIW architektury
Mináč, Tomáš ; Husár, Adam (oponent) ; Masařík, Karel (vedoucí práce)
Tato práce pojednává o jazyce CodAl a Codasip frameworku. Dále popisuje kompilační platformu LLVM, jazyk LLVM IR a optimalizace nad tímto jazykem. Vytvoření návrhu a implementace rozšíření kompilační platformy LLVM o globální plánovaní instrukcí na základe profilu je cílem této práce.
|
|
Převod binárního kódu x86 do vyššího programovacího jazyka
Jurík, Marián ; Křivka, Zbyněk (oponent) ; Kolář, Dušan (vedoucí práce)
Cílem diplomové práce je navrhnutí a implementace programu na převod binárního kódu do vyššího programovacího jazyka. Práce je zaměřena na binární soubory pro operační systém MS Windows. Je zde podrobně popsán souborový formát PE, který definuje způsob ukládání binárního kódu do souboru. Také je popsána instrukční sada IA-32, kde byl hlavně kladen důraz na způsob dekódování binárního kódu do jazyka symbolických adres. Součástí práce jsou popsány typické konstrukce používané při překladu a návrh vyššího programovacího jazyka. Návrh vychází z existujících jazyků C, C++ a jazyka symbolických adres. Předposlední kapitola pojednává o návrhu programu a samotné implementace. V závěru práce jsou zhodnoceny její výhody a nevýhody.
|
|
Automated File Editing Using Genetic Programming
Sedláček, Marek ; Vašíček, Zdeněk (oponent) ; Sekanina, Lukáš (vedoucí práce)
File editing is an integral part of today's work for many people, but not everyone has programming skills or deep knowledge of editing tools to make their editing efficient and quick. This is exactly what the program presented in this thesis -- Ebe -- is trying to solve. Ebe takes snippets of file edits done by the user and using genetic programming it finds the correct algorithm to transform the whole file or even multiple files into the desired output. Ebe consist of multiple parts, which had to be designed and implemented to achieve its goals. For this purpose a new programming language was designed to suite file editing and work well with genetic programming, an interpreter for this language was implemented as well as a compiler that uses genetic programming to synthesize the editing algorithm based on given examples. Ebe was then tested with other tools for file editing. These experiment focused on the overall editing speed and Ebe ended up having better editing times than Python 3 and similar editing times as the language AWK in most experiments. These experiments proved, that for many frequent editing tasks Ebe has a potential as an alternative tool for file editing.
|
| |
|
Interpret Petriho sítí
Blažek, Tomáš ; Janoušek, Vladimír (oponent) ; Kočí, Radek (vedoucí práce)
Tato práce se zabývá konceptem formalismu Petriho sítí, který umožňuje zkoumat dynamické chování paralelních a nedeterministických systémů. Dále se práce zabývá jeho variantou Objektově orientovaných Petriho sítí (OOPN), jejímž cílem je usnadnit proces modelování systémů objektově orientovaným přístupem. Cílem této diplomové práce je navrhnout vnitřní reprezentaci modelů OOPN vhodnou pro efektivní interpretaci a implementovat překladač z jazyka PNtalk do vnitřní reprezentace. Následně pak navrhnout a realizovat interpret modelů OOPN, který bude umožňovat provádění simulace běhu těchto modelů s tím, že výsledný interpret musí také kromě objektů Petriho sítí umět pracovat i s vybranou podmnožinou objektů z jazyka Java.
|
|
Překladač z Octave do C++
Ševčík, Václav ; Křivka, Zbyněk (oponent) ; Kolář, Martin (vedoucí práce)
Programy vyvinuté v interaktivním programovém prostředí Matlab je náročné využít na zařízeních s malým množstvím paměti a v integraci do projektů bez podpory tohoto jazyka. Proto jsou programy převáděny do jazyka C++. V praxi se používá manuálního převodu, který výrazně prodlužuje dobu nasazení. Tato práce se zaměřuje na automatizování překladu z jazyka Octave/Matlab do C++ s použitím knihovny Eigen umožňující využití maticových a vektorových operací. Překladač umožňuje překlad základních 39 operací a 13 funkcí jazyka Octave. Experimenty ukazují, že se tímto překladem dosáhne snížení požadavku paměti až o 99%.
|