PONČÁK, M. Rozšíření překladače jazyka C o podporu dalších embedded mikroprocesorů [online]. Brno: Vysoké učení technické v Brně. Fakulta elektrotechniky a komunikačních technologií. 2020.
Zadání bakalářské práce studenta Mateje Pončáka bylo zadáním, o jehož realizaci měl student již od prvního setkání jasný zájem. Student se řešení práce již od počátku aktivně věnoval a mým úkolem jako vedoucího práce bylo studenta pouze směřovat tak, aby jím stanovené cíle práce byly realisticky obtížné a v daném čase zvládnutelné. V rámci řešení práce byl naprosto patrný zájem studenta o řešení tématu práce. Navržené připomínky z konzultací se vždy pokoušel zapracovat do řešení práce. Úkolem studenta bylo navrhnout a realizovat rozšíření zvoleného překladače jazyka C o podporu dalšího embedded mikroprocesoru. Následně na vhodném programu otestovat správnost generovaného spustitelného kódu pro zvolený mikroprocesor a na zvoleném příkladu demonstrovat správnou funkci překladače na reálném HW. S ohledem na epidemiologickou situaci v tomto školním roce spojenou s distanční výukou byl nucen student demonstrovat funkci překladače nikoliv na reálném HW, ale pouze na standardním simulátoru zvoleného mikroprocesoru. Což ovšem nijak nesnižuje výsledky studentovi práce. Student po literární rešerši překladačů vhodných pro budoucí rozšíření (SDCC, Clang/LLVM), zvolil jako vhodný překladač Clang/LLVM a jako nově podporovaný mikroprocesor si vybral procesor z rodiny S08 od společnosti NXP, jehož strojové instrukce již ovládal díky znalostem z kurzu: Vestavné systémy a mikroprocesory (BPC-MIC). Cílů práce bylo dosaženo. Student navrhl rozšíření backend části překladače Clang o podporu překladu LLVM mezikódu do strojových instrukcí zvoleného mikroprocesoru S08. Ověřil správnost generovaného kódu v simulátoru a provedl také srovnání jeho efektivity s konkurenčními překladači: SDCC a NXP CodeWarrior. Výsledný strojový kód z jeho překladu je při srovnání s výsledky obou referenčních překladačů lepší a to nejen z hlediska spotřeby paměti, ale i časové efektivity. Tato skutečnost tak jednoznačně svědčí o kvalitě studentem odvedené práce. Je samozřejmé, že by kompletní implementace překladače včetně podpory všech strojových instrukcí zvoleného mikroprocesoru a úpravy základních knihoven byla prací vysoce nad rámec bakalářského studia. Přesto je ze studentem prezentovaných výsledků jasně patrná skutečnost, že různá embedded vývojářská prostředí, přestože obsahují překladače dodávané přímo výrobci konkrétních mikroprocesorů, zdaleka nedosahují kvality generovaného kódu, kterou bychom od nich dnes předpokládali. Což studentem prezentovaná srovnání jasně dokazují. Dosažené výsledky i formální zpracování práce tedy jednoznačně svědčí o bakalářských schopnostech studenta. Díky dosaženým výsledkům, úrovni zpracování textu i práci s literaturou lze na práci pohlížet jako na velmi kvalitně zpracované dílo. Předložené práci proto navrhuji hodnocení: Výborně – A. (93)
Pan Matej Pončák ve své bakalářské práci řešil problematiku rozšíření stávajících překladačů jazyka C o další embedded mikroprocesor. Náročnost zadání považuji po odborné i časové stránce za nadprůměrnou, protože problematika návrhu překladačů vyšších programovacích jazyků se v rámci studijního programu Automatizační a měřicí technika nevyučuje. Bakalářská práce je členěna do 6 kapitol plus úvod a závěr, obsahuje cca 55 stran textu. Na začátku práce (kapitola 1) autor uvádí obecné principy překladačů, následně se zaměřuje na překladač SDCC a LLVM. V kapitole 2 popisuje, jak lze rozšířit uvedené překladače o další architektury procesorů. V kapitole 3 je uveden popis rodiny mikrokontrolérů HCS08, pro kterou autor zamýšlí rozšířit překladač LLVM, a popis referenčního překladače CodeWarrior. Kapitola 4 je věnována implementaci backend části pro překladač LLVM umožňující generovat výstup pro mikrokontroléry rodiny HCS08. Ověření funkčnosti implementace na několika testovacích příkladech je popsáno v kapitole 5. Dosažené výsledky jsou zhodnoceny v kapitole 6. Popis principů překladačů a způsob rozšíření backendu překladačů SDCC a LLVM o možnost generovat výstup pro mikrokontroléry rodiny HCS08 považuji za srozumitelný a výstižný. Implementaci vlastního backendu do překladače LLVM a jeho testování považuji za správné. Poměr mezi částí práce převzatou z literatury a vlastní prací pana Pončáka považuji za vyvážený. Práce je po grafické i jazykové stránce na solidní úrovni, obsahuje malý počet překlepů. Dle mého názoru pan Matej Pončák splnil všechny body zadání své bakalářské práce. Demonstraci funkce překladače na reálném hardware (bod 6 zadání) autor sice z důvodu nedostupnosti vývojové desky neprovedl, ale funkci překladače ověřil pomocí simulátoru mikrokontrolérů rodiny HCS08, což považuji za ekvivalentní. Na závěr konstatuji, že dle mého názoru, pan Matej Pončák prokázal výborné bakalářské schopnosti, proto navrhuji hodnotit jeho práci známkou A/91 bodů.
eVSKP id 127098