|
Extrakce grafu toku řízení z formátu LLVM IR
Kondula, Václav ; Šoková, Veronika (oponent) ; Smrčka, Aleš (vedoucí práce)
Tato bakalářská práce se zabývá návrhem a implementací extrakce grafů toku řízení ze zdrojových souborů jazyků C a C++ ve formátu LLVM IR. K tomu účelu bylo použito rozhraní LibTooling překladače Clang, pomocí něhož byl tento extraktor implementován jako samostatný nástroj. Výstup programu odpovídá požadavkům platformy Testos, jemuž poskytuje data pro automatické generování testovacích požadavků na základě specifického pokrytí.
|
|
Automatická tvorba testovacích případů z datových toků
Kraut, Daniel ; Fiedor, Tomáš (oponent) ; Smrčka, Aleš (vedoucí práce)
Tato práce se zabývá automatickou tvorbou testovacích případů na úrovni jednotkového testování, pro zdrojové texty v jazyce C. K dosažení automatizace jsou použity metody přístupu k software jako k datovým tokům proměnných. Je zde nastíněn náhled na průběh tvorby testů a funkci CSP solverů, které jsou nezbytnou částí pro rozhodnutelnost těhto problémů. Statická analýza kódu je umožněna knihovnou LibTooling v projektu překladačového front-endu Clang. Jsou uvedeny výstupy z aplikace, jimiž jsou automaticky vytvořené vstupní hodnoty pro testovací případy.
|
|
Gramatická evoluce v optimalizaci software
Pečínka, Zdeněk ; Minařík, Miloš (oponent) ; Sekanina, Lukáš (vedoucí práce)
Tato diplomová práce nabízí stručný úvod do evolučního počítání. Popisuje a porovnává genetické programování a gramatickou evoluci a jejich možné využití v problematice automatické opravy software. Podrobně studuje možnosti aplikace gramatické evoluce v problému automatické opravy softwaru. Na základě získaných poznatků byla navržena a implementována nová metoda pro automatickou opravu softwaru, založená na gramatické evoluci. Její experimentální ověření proběhlo na řadě testovacích programů.
|
|
Refactoring and Verification of the Code of mkfs xfs
Ťulák, Jan ; Peringer, Petr (oponent) ; Vojnar, Tomáš (vedoucí práce)
This work describes the processes of refactoring mkfs.xfs program for a purpose of refining its code and cleaning the technical debt accumulated over 20 years of the program’s existence. The mkfs.xfs source code is then a subject to static analysis and the used tools (CppCheck, Coverity, Codacy, GCC, Clang) are compared in terms of the number and type of the found defects.
|
|
Bobox Runtime Optimization
Krížik, Lukáš ; Zavoral, Filip (vedoucí práce) ; Parízek, Pavel (oponent)
Cílem této diplomové práce je vytvořit nástroj na optimalizaci kódu pro paralelní prostředí Bobox. Nástroj redukuje počet krátce a dlouze běžících úloh na základě statické analýzy kódu. Některé případy krátce běžících úloh způsobují zbytečné přeplánování. Pokud plánovač nemá dostatek informací o dané úloze, plánovač může úlohu naplánovat, i když tato úloha nemá všechna potřebná vstupní data. Pro odstranění krátce běžící úlohy nástroj analyzuje použití vstupních dat a informuje plánovač. Dlouze běžící úlohy můžou v některých případech potlačit paralelismus. Větší granularita úloh může znatelně vylepšit časy běhu v paralelním prostředí. Pro odstranění dlouze běžících úloh nástroj musí být schopen vyhodnotit složitost kódu a vložit příkaz pro přeplánování na vhodné místo. Powered by TCPDF (www.tcpdf.org)
|
|
Jednoduché vývojové prostředí pro C++ na platformě Android
Režňák, Pavel ; Janoušek, Vladimír (oponent) ; Peringer, Petr (vedoucí práce)
Tato bakalářská práce se zabývá vytvořením prostředí pro překlad aplikací psaných v jazycích C a C++. Vývojové prostředí se skládá z aplikace emulující terminál a balíčků obsahujících open-source překladače a pomocné nástroje, přeložené pro mobilní zařízení s ARM procesorem a operačním systémem Android. Tento proces zahrnuje vygenerování křížového překladače pro systém Android z nástrojů NDK, správné nastavení parametrů během konfigurace, opravy zdrojových souborů těchto open-source překladačů a vytvoření aplikace instalovatelné pod OS Android, která umožní snadné použití těchto nástrojů.
|
|
Detekce podobnosti zdrojových souborů v jazyce C
Rek, Petr ; Kučera, Jiří (oponent) ; Matula, Peter (vedoucí práce)
Tato práce se zabývá návrhem, implementací a testováním nástroje csim, sloužícího pro porovnávání podobnosti dvou souborů v jazyce C. Primárním účelem vzniku tohoto nástroje je testování zpětného překladače vyvíjeného společností AVG Technologies s.r.o. Testování je prováděno na základě podobnosti abstraktního syntaktického stromu původního a dekompilovaného souboru. Čtenář je tedy seznámen se základy problematiky zpětného inženýrství, zejména zpětným překladem binárního kódu do vyšší úrovně reprezentace. Dále je popsán koloběh, kterým kód prochází od jeho vytvoření až po zpětný překlad, a jeho vliv na tento proces. Čtenáři je také poskytnut přehled o projektu LLVM a překladači Clang, který je základním stavebním kamenem nástroje csim.
|
|
Detection of Expressions with Undefined Behavior in C Language
Hellebrandt, Lukáš ; Vojnar, Tomáš (oponent) ; Müller, Petr (vedoucí práce)
This thesis engages in detection of undefined behavior in the C language programs. We focus on undefined behavior stemming from incorrect work with sequence points and side effects. We perform a theoretical analysis and put terms like undefined behavior or side effect in context of the paper. Furthermore, we explain dangerousness of the constructs leading to undefined behavior. We propose a method for automated detection of the mentioned kind of undefined behavior. Finally, we design and implement a tool for its automated static detection and show the principles of the tool’s function. While designing the tool, contrary to current solutions, we stress functionality even in cases like accessing the memory via a pointer or from a called function. The thesis contains examples of dangerous constructs, functions of the created tool are demonstrated on some of them.
|
| |
|
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.
|