Optimalizace frontendu překladače
| dc.contributor.advisor | Beránek, Jakub | |
| dc.contributor.author | Indrák, Jakub | |
| dc.contributor.referee | Běhálek, Marek | |
| dc.date.accepted | 2026-06-01 | |
| dc.date.accessioned | 2026-09-02T14:40:35Z | |
| dc.date.available | 2026-09-02T14:40:35Z | |
| dc.date.issued | 2026 | |
| dc.description.abstract | Tato bakalářská práce se zabývá optimalizací frontendu překladače jazyka C. Práce analyzuje architekturu překladačů, teorii formálních jazyků a existující implementace překladačů (GCC, Clang/LLVM, TCC). Na základě této analýzy je navržen a implementován překladač cppliator v jazyce C++23 s backendem využívajícím knihovnu LLVM. Klíčovými optimalizačními technikami jsou datově orientovaný návrh s plochým polem pro reprezentaci abstraktního syntaktického stromu, explicitní stavový automat namísto rekurzivního sestupu, Prattův parser pro výrazy s operátorovou precedencí, rozsáhlé využití constexpr vyhledávacích tabulek a podpora paralelního parsování. Dosahuje 10násobné propustnosti oproti GCC. | cs |
| dc.description.abstract | This bachelor thesis focuses on the optimization of a C language compiler frontend. The thesis analyzes compiler architecture, formal language theory, and existing compiler implementations (GCC, Clang/LLVM, TCC). Based on this analysis, a compiler called cppliator is designed and implemented in C++23, with a backend utilizing the LLVM library. Key optimization techniques include data-oriented design with a flat array representation of the abstract syntax tree, an explicit state machine instead of recursive descent parsing, a Pratt parser for operator-precedence expression parsing, extensive use of constexpr lookup tables, and support for parallel parsing. The resulting compiler achieves an 10x throughput improvement compared to gcc. | en |
| dc.description.department | 460 - Katedra informatiky | cs |
| dc.description.result | výborně | cs |
| dc.format.extent | 1902386 bytes | |
| dc.format.mimetype | application/pdf | |
| dc.identifier.other | OSD002 | |
| dc.identifier.sender | S2724 | |
| dc.identifier.thesis | IND0040_FEI_B0613A140014_2026 | |
| dc.identifier.uri | http://hdl.handle.net/10084/160790 | |
| dc.language.iso | cs | |
| dc.publisher | Vysoká škola báňská – Technická univerzita Ostrava | cs |
| dc.rights.access | openAccess | |
| dc.subject | překladač | cs |
| dc.subject | frontend | cs |
| dc.subject | optimalizace | cs |
| dc.subject | jazyk~C | cs |
| dc.subject | syntaktická analýza | cs |
| dc.subject | lexikální analýza | cs |
| dc.subject | datově orientovaný návrh | cs |
| dc.subject | abstraktní syntaktický strom | cs |
| dc.subject | Prattův parser | cs |
| dc.subject | paralelní parsování | cs |
| dc.subject | compiler | en |
| dc.subject | frontend | en |
| dc.subject | optimization | en |
| dc.subject | C~language | en |
| dc.subject | parsing | en |
| dc.subject | lexical analysis | en |
| dc.subject | data-oriented design | en |
| dc.subject | abstract syntax tree | en |
| dc.subject | Pratt parser | en |
| dc.subject | parallel parsing | en |
| dc.thesis.degree-grantor | Vysoká škola báňská – Technická univerzita Ostrava. Fakulta elektrotechniky a informatiky | cs |
| dc.thesis.degree-level | Bakalářský studijní program | cs |
| dc.thesis.degree-name | Bc. | |
| dc.thesis.degree-program | Informatika | cs |
| dc.title | Optimalizace frontendu překladače | cs |
| dc.title.alternative | Compiler Frontend Optimizations | en |
| dc.type | Bakalářská práce | cs |
| local.files.count | 6 | |
| local.files.size | 4368693 | |
| local.has.files | yes |
Files
Original bundle
1 - 5 out of 6 results
Loading...
- Name:
- IND0040_FEI_B0613A140014_2026.pdf
- Size:
- 1.81 MB
- Format:
- Adobe Portable Document Format
- Description:
- Text práce
Loading...
- Name:
- IND0040_FEI_B0613A140014_2026_zadani.pdf
- Size:
- 153.13 KB
- Format:
- Adobe Portable Document Format
- Description:
- Zadání
Loading...
- Name:
- IND0040_FEI_B0613A140014_2026_priloha.zip
- Size:
- 1.82 MB
- Format:
- ZIP
- Description:
- Příloha
Loading...
- Name:
- IND0040_FEI_B0613A140014_2026_posudek_vedouci_Beranek_Jakub.pdf
- Size:
- 165.47 KB
- Format:
- Adobe Portable Document Format
- Description:
- Posudek vedoucího – Beránek, Jakub
Loading...
- Name:
- IND0040_FEI_B0613A140014_2026_posudek_oponent_Behalek_Marek.pdf
- Size:
- 160.73 KB
- Format:
- Adobe Portable Document Format
- Description:
- Posudek oponenta – Běhálek, Marek