NAVRÁTIL, J. Rozšíření překladače jazyka assembler o podporu nových mikroprocesorů [online]. Brno: Vysoké učení technické v Brně. Fakulta elektrotechniky a komunikačních technologií. 2022.

Posudky

Posudek vedoucího

Petyovský, Petr

Úkolem studenta bylo navrhnout a realizovat rozšíření zvoleného překladače jazyka assembler o podporu dalšího embedded mikroprocesoru a tento proces kvalitně zdokumentovat. Následně pomocí vhodných testů ověřit správnost generovaného spustitelného kódu pro zvolený mikroprocesor a na vhodném příkladu demonstrovat správnou funkci překladače i na reálném HW. V rámci řešení práce byl patrný zájem studenta o řešení tématu práce. Možnosti konzultací využíval v menší míře, ale o to efektivněji a navržené připomínky se vždy pokoušel zapracovat v rámci dalšího řešení práce. Student po literární rešerši překladačů vhodných pro budoucí rozšíření (GNU, CodeX, HXA Cross Assembler), zvolil jako vhodný překladač Flat Assembler G a jako nově podporovaný mikroprocesor si vybral procesor z rodiny S08 od společnosti NXP, jehož strojové instrukce již ovládal a to díky znalostem z kurzu: Vestavné systémy a mikroprocesory (BPC-MIC). Cílů práce bylo dosaženo. Student navrhl funkční rozšíření překladače Flat Assembler G o podporu překladu strojových instrukcí zvoleného mikroprocesoru S08 a tento proces v textu práce zdokumentoval. Ověřil správnost generovaného kódu jeho překladače pomocí simulátoru i na reálném vývojovém kitu. Výsledek také srovnal oproti referenčnímu překladači NXP CodeWarrior. Text práce je na odpovídající odborné i formální úrovni a to včetně práce s literaturou. Student věnoval řešení dostatek času, jednotlivé úkoly si vhodně rozvrhl a přesto, že se v závěru dostal do mírné časové tísně, dokázal ji svým zvýšeným úsilím překonat. Dosažené výsledky i formální zpracování práce jednoznačně svědčí o bakalářských schopnostech studenta. Předložené práci proto navrhuji hodnocení: Výborně – A (95).

Navrhovaná známka
A
Body
95

Posudek oponenta

Macho, Tomáš

Pan Jan Navrátil se ve své bakalářské práci zabýval problematikou retargetable překladačů jazyka symbolických adres (assemblerů). Hlavním cílem práce bylo doplnit existující překladač jazyka symbolických adres Flat Assembler o definici instrukční sady nového procesoru, který překladačem dosud není podporován, a ověřit správnost implementace nové instrukční sady. Student se musel seznámit se základními principy fungování překladačů jazyka symbolických adres, formáty výstupních kódů a vývojovým prostředím CodeWarrior. Náročnost zadání považuji za odpovídající požadavkům kladeným na zadání bakalářské práce po odborné i časové stránce. Práce obsahuje cca 45 stran textu a je členěna do 10 kapitol včetně kapitoly úvod. V první kapitole autor uvádí základní informace o jazycích symbolických adres a příklady běžně dostupných překladačů (GNU assembler, CodeX assembler, HXA Cross Assembler, Vasm a Macroassembler AS). Druhá kapitola je věnována syntaxi a popisu pseudoinstrukcí překladače Flat Assembler G, ve třetí kapitole jsou uvedeny informace o programátorském modelu mikrokontrolerů rodiny HCS08, instrukční sadě a vývojovém prostředí CodeWarrior. Ve čtvrté kapitole autor rozebírá způsoby implementace instrukční sady nového procesoru do překladače Flat Assembler G pomocí klasických makroinstrukcí i pomocí speciální CALM makroinstrukce (Compiled Assembly-like Macro). Bohužel autor Compiled Assembly-like Macro (CALM) označuje v celé práci za instrukci, což považuji za matoucí. V páté kapitole jsou uvedeny základní informace o souborovém formátu ELF a S-record a způsob, jak spojit části kódu generované vývojovým prostředím CodeWarrior a Flat Assembler G (fasmg). Student se musel vypořádat s problém, jak spojit kód generovaný uzavřeným systém CodeWarrior s kódem generovaným externím překladačem. V šesté kapitole autor porovnává, zda implementace nové instrukční sady do překladače fasmg generuje stejný binární kód jako referenční překladač, který je součástí vývojového prostředí CodeWarrior. Autor nejprve otestoval, zda referenční překladač a překladač fasmg generují stejné binární kódy instrukcí a následně provedl ověření na demonstrativním programu (jednoduchém vzorci obsahujícím aritmetické instrukce pro násobení konstantou, odčítání a dělení proměnných). Nakonec ověřil, že jeho implementace správně generuje S-record. V sedmé kapitole pan Navrátil testoval fungování kódu generovaného překladačem fasmg na vývojové desce TWR-S08LH64. K testování opět použil vzorec z kapitoly 6 dále implementaci LFSR (Linear-feedback shift register) galoisova typu o délce 16 bitů. V osmé kapitole autor zhodnotil dosažené výsledky včetně porovnání rychlosti překladu při implementaci instrukční sady pomocí klasických maker i pomocí Compiled Assembly-like Macro (CALM) s referenčním překladačem, který je součástí vývojového prostředí CodeWarrior. Dle mého názoru pan Navrátil splnil všechny body zadání své práce. Poměr mezi částí práce převzatou z literatury a vlastním dílem studenta považuji za vyvážený. Implementaci instrukční sady mikrokontrolérů rodiny HCS08 do překladače fasmg i postup ověření implementace studentem považuji za správný. Student prokázal solidní schopnosti prezentovat výsledky své práce i využívat informace uvedené v odborné literatuře. Po jazykové stránce autorovi vytýkám občasné používání dlouhých souvětí, ve kterých se čtenář těžko orientuje (např. poslední souvětí na str. 23) a nevhodné, resp. nevýstižné názvy některých kapitol (např.: „6.1 Testování binárního výstupu“ nebo „8.2 Postup měření“). Ke grafické stránce práce nemám výhrady. Na závěr konstatuji, že dle mého názoru, pan Jan Navrátil prokázal výborné bakalářské schopnosti, proto navrhuji hodnotit jeho práci známkou A/90 bodů.

Navrhovaná známka
A
Body
90

Otázky

eVSKP id 142705