Assembly fordító absztrakt CPU architektúrára

OData támogatás
Konzulens:
Dr. Goldschmidt Balázs
Irányítástechnika és Informatika Tanszék

Napjainkban egyre nagyobb szerepet játszik a biztonság. Életünk szerves részét képezik a jelszavak, azonosítók, kamerák, szenzorok, melyek mind egy célt szolgálnak: védelmet nyújtanak. A modern technológia segítségével igen gyakran a fizikai védelmünket (lásd sorompók, zárak) szoftveresen is vezérelhetjük, s ez lehetőségek egész tárházát adja a kezünkbe.

Dolgozatom témája a fent említett szoftveres vezérlés megvalósítása közben merült fel. A Cogitnet Kft egy biztonságtechnikai projektjéhez saját hardvert fejlesztett, ami a vezérlő szerepét képes ellátni különböző környezetekben. Azonban ahhoz, hogy az eszközzel kommunikálni lehessen, hogy programozni tudják, szükségessé vált egy fordító készítése, ami az assembly nyelvhez nagyon hasonló (néhol teljesen megegyező) kódot lefordítja gépi kódra. Bár kezdetben inkább egy Pascal-szerű nyelven szerették volna programozni az eszközt, a szűkös határidők és a feladat komplexitása miatt nem ez lett a végleges megoldás.

A fejlesztés inkrementálisan, iteratív fázisokban zajlott. Mindig egy egyszerű problémán kezdtem el dolgozni, amit később a projekt vezetői segítségével apránként eljuttattunk a valós megoldandó feladathoz. A fordítóval szemben támasztott követelmények időről időre változtak, ami a hardveren futó virtuális gép megváltozásának, vagy pedig kényelmi szempontok figyelembe vételének volt köszönhető.

Az elkészült compiler képes bonyolult, több fájlból álló kódot hibátlanul lefordítani a viruális gép által értelmezhető gépi kódra. Programozás során a fejlesztő lehetőséget kap néhány, a magasszintű nyelvekben előforduló funkció használatára – például változók castolása, feltételes fordítás, paraméterezett fájl beolvasás. Rendelkezésre állnak kapcsolók, melyekkel a fordítási folyamatot szabályozhatjuk, vagy többletinformációt nyerhetünk a futásról a kimeneten.

Egy compiler megvalósítása összetett feladat. Kénytelen voltam előzetes ismeretek és tapasztalatok nélkül belefogni a fejlesztésbe, ezért az elkészült termékben számos hiányosságot találhat a hozzáértő szakember. Ezek befoltozása, javítása egy jövőbeli feladat lesz.

Letölthető fájlok

A témához tartozó fájlokat csak bejelentkezett felhasználók tölthetik le.