|
Extraction of Control Flow Graph from LLVM IR Format
Kondula, Václav ; Šoková, Veronika (referee) ; Smrčka, Aleš (advisor)
This Bachelor's thesis deals with design and implementation of control flow graphs extraction from source files in C and C++ language to LLVM IR format. The extractor was implemented as a standalone tool using the LibTooling interface of the Clang compiler. Output of this tool follows the requirements of platform Testos, so it can be used for automated generation of test requirements based on specified coverage criteria.
|
|
Automatic Generation of Test Cases from Data-Flow
Kraut, Daniel ; Fiedor, Tomáš (referee) ; Smrčka, Aleš (advisor)
This thesis deals with automatic generation of test cases on Unit testing level for source codes in C language. In order to achieve automatization are used methods of approach to software as a Data-flow of variables. There is outlined a process of creating tests here as well as a function of CSP solvers which are necessary part of solving this problems. Static code analysis is accessed with LibTooling libraring as part of a compiler front-end project Clang. Output of a developed application are provided here which is automatically generated input values for test cases.
|
|
Grammatical Evolution in Software Optimization
Pečínka, Zdeněk ; Minařík, Miloš (referee) ; Sekanina, Lukáš (advisor)
This master's thesis offers a brief introduction to evolutionary computation. It describes and compares the genetic programming and grammar based genetic programming and their potential use in automatic software repair. It studies possible applications of grammar based genetic programming on automatic software repair. Grammar based genetic programming is then used in design and implementation of a new method for automatic software repair. Experimental evaluation of the implemented automatic repair was performed on set of test programs.
|
| |
|
Bobox Runtime Optimization
Krížik, Lukáš ; Zavoral, Filip (advisor) ; Parízek, Pavel (referee)
The goal of this thesis is to create a tool for an optimization of code for the task-based parallel framework called Bobox. The optimizer tool reduces a number of short and long running tasks based on a static code analysis. Some cases of short-running tasks cause an unnecessary scheduling overhead. The Bobox scheduler can schedule a task even though the task does not have all input data. Unless, the scheduler has enough information not to schedule such task. In order to remove such short-running task, the tool analyses its input usage and informs the scheduler. Long-running tasks inhibit a parallel execution in some cases. A bigger task granularity can significantly improve execution times in a parallel environment. In order to remove a long-running task, the tool has to be able to evaluate a runtime code complexity and yield a task execution in the appropriate place. Powered by TCPDF (www.tcpdf.org)
|
|
Simple C++ Development Environment for Android
Režňák, Pavel ; Janoušek, Vladimír (referee) ; Peringer, Petr (advisor)
This bachelor thesis is about creation of an environment for compiling aplications which has been written in C and C++ languages. This development environment is made of an application emulating terminal window and packages containing open-source compilers and optional tools compiled for mobile devices with ARM processors and Android operating system. This process includes generation of cross-compilers for Android system from NDK tools, correct setting of parameters during configuration, fixes of the source codes of these open-source compilers and creation of an application which is installable under Android OS and which will allow us to easily use these tools.
|
|
C Language Source Files Similarity Detection
Rek, Petr ; Kučera, Jiří (referee) ; Matula, Peter (advisor)
This thesis deals with design, implementation and testing of the csim tool, which compares two C source files by their similarity. The primary purpose of this tool is testing of a decompiler developed by AVG Technologies s.r.o. Testing is based on comparing abstract syntax trees of the original and decompiled source files. The reader is introduced to the basics of reverse engineering, especially reverse engineering of a binary file into a high-level programming language source file. The process of compiling followed by decompiling of a file is described along with its effect on reverse engineering. The LLVM project and the Clang compiler is introduced to the reader, since its libraries are the foundation upon which the csim tool is built.
|
|
Detection of Expressions with Undefined Behavior in C Language
Hellebrandt, Lukáš ; Vojnar, Tomáš (referee) ; Müller, Petr (advisor)
Práce se zabývá detekcí nedefinovaného chování v programech v jazyce C. Zaměřujemese na nedefinované chování vznikající nesprávnou prací se sekvenčními body a vedlejšími efekty. Provedeme teoretický rozbor a pojmy jako nedefinované chování nebo vedlejší efekt zasadíme do kontextu práce. Dále vysvětlíme nebezpečnost konstrukcí vedoucích k nedefinovanému chování. Navrhneme metodu pro automatickou detekci zmíněného druhu nedefinovaného chování. Nakonec navrhneme a implementujeme nástroj pro jeho automatizovanou statickou detekci a popíšeme principy funkce tohoto nástroje. Při jeho návrhu klademe, narozdíl od současných řešení, důraz na funkčnost i v případě přístupu k paměti přes ukazatel nebo z volané funkce. Práce obsahuje příklady nebezpečných konstrukcí, na některých z nich jsou demonstrovány funkce vytvořeného nástroje.
|
| |
|
Compiler for EdkDSP Platform
Baručák, Robert ; Dolíhal, Luděk (referee) ; Masařík, Karel (advisor)
Goal of this bachelor's thesis was to create a compiler system for EdkDSP platform. Two different approaches to construction of compiler system for multiprocessor platform are presented. Compiler is based on LLVM compiler infrastructure. As a result, two versions of compiler system utilising hardware capabilities of EdkDSP were created. Developed solutions have a few constraints which are discussed in this paper.
|