2 research outputs found
C Compiler in Python
Tato bakalaĹ™ská práce se vÄ›nuje návrhu a implementaci pĹ™ekladaÄŤe jazyka C pro mikrokontrolĂ©r PicoBlaze. V souÄŤasnosti je vĂ˝voj aplikacĂ pro tento mikrokontrolĂ©r limitován na pouĹľitĂ asembleru. CĂlem tĂ©to práce je tedy vytvoĹ™it pĹ™ekladaÄŤ, kterĂ˝ bude snadno upravitelnĂ˝ a rozširitelnĂ˝. Návrh a implementace jsou rozdÄ›leny do modulĹŻ, z kterĂ˝ch kaĹľdĂ˝ vykonává jinou fázi pĹ™ekladu. Moduly takhle mohou bĂ˝t jednoduše vymÄ›nÄ›ny nebo rozšĂĹ™eny.This paper describes the design and implementation of a C compiler in Python for the PicoBlaze microcontroler. Currently developement of applications for this microcontroller is limited to using assembler. Therefore the goal is to create a compiler that can be easily modified or extended. Design and implementation is separated into modules. These can be easily replaced or expanded.
Networking Subsystem Configuration Interface
CĂlem diplomovĂ© práce je návrh sĂĹĄovĂ© konfiguraÄŤnĂ knihovny s dĹŻrazem kladenĂ˝m na pĹ™enositelnost mezi operaÄŤnĂmi systĂ©my na bázi Linuxu a BSD a rozšiĹ™itelnosti podpory knihovny. V druhĂ© kapitole práce zkoumá dostupnĂ© konfiguraÄŤnĂ rozhranĂ obou operaÄŤnĂch systĂ©mĹŻ. DetailnÄ› pak rozebĂrá vlastnosti rozhranĂ Netlink socketĹŻ, kterĂ© je primárnĂm konfiguraÄŤnĂm rozhranĂm pro sĂĹĄovĂ© prvky na Linuxu, a systĂ©movĂ© volánĂ ioctl, kterĂ© má na Linuxu menšà schopnosti, ale zato je primárnÄ› pouĹľĂvanĂ© na BSD a jinĂ˝ch UNIX systĂ©mech. Jsou tĂ©Ĺľ zkoumanĂ© rozhranĂ pro konfiguraci rozdĂlnĂ˝ch firewallĹŻ. V tĹ™etĂ kapitole je práce zameĹ™ená na konkrĂ©tnĂ typy sĂĹĄovĂ˝ch zaĹ™ĂzenĂ, specifika jejich konfigurace a jejich návaznost na rozhranĂ jádra popsanĂ© v druhĂ© kapitole. V ÄŤtvrtĂ© kapitole jsou formulovány poĹľadavky na konfiguraÄŤnĂ knihovnu: jednoduchá rozšiĹ™itelnost, pĹ™enositelnost na rĹŻznĂ© operaÄŤnĂ systĂ©my, podpora sledovánĂ zmÄ›n a událostĂ a rozšiĹ™itelnost o rĹŻznĂ© typy uĹľivatelskĂ˝ch rozhranĂ. Na základÄ› vĂ˝zkumu z pĹ™edcházejĂcĂch dvou kapitol je pĹ™ednesen návrh knihovny. Návrh definuje konfiguraÄŤnĂ rozhranĂ jako hierarchii abstraktnĂch tĹ™Ăd, oddÄ›lenĂ˝ch od implementace. To umoĹľnuje mĂt souÄŤasnÄ› nÄ›kolik implementacĂ stejnĂ©ho konfiguraÄŤnĂho rozhranĂ i v rámci jednoho operaÄŤnĂho systĂ©mu. Jako vstupnĂ rozhranĂ knihovny je definovaná tĹ™Ăda LibNCFG, která má na starosti tyto konfiguraÄŤnĂ objekty vytvoĹ™it namĂsto uĹľivatele. TĂmto je dosaĹľená jednoduchá rozšiĹ™itelnost knihovny o novĂ© rozhranĂ operaÄŤnĂch systĂ©mĹŻ i o podporu konfigurace novĂ˝ch sĂĹĄovĂ˝ch prvkĹŻ. Podpora pro novĂ© uĹľivatelskĂ© rozhranĂ se dá implementovat jako nová sluĹľba, která zabaluje rozhranĂ knihovny a poskytuje jiná rozhranĂ. Pro podporu sledovánĂ zmÄ›n poskytuje tĹ™Ăda LibNCFG metody pro registraci zpÄ›tnĂ˝ch volánĂ pro definovanĂ© události. Ve ÄŤtvrtĂ© kapitole práce detailnÄ› popisuje rozhranĂ tĹ™Ădy LibNCFG, modulu Common a tĹ™Ăd NetDevice, EthDevice a BondDevice, kterĂ© definujĂ konfiguraÄŤnĂ rozhranĂ pĹ™ĂslušnĂ˝ch typĹŻ sĂĹĄovĂ˝ch zaĹ™ĂzenĂ. Pro tyto tĹ™Ădy jsou implementovanĂ© konkrĂ©tnĂ tĹ™Ădy NetlinkNetDevice, NetlinkEthDevice a sysfsBondDevice a popsanĂ© jejich implementaÄŤnĂ detaily. V pátĂ© kapitole je popsaná ukázková aplikace, která byla implementovaná pro účely pĹ™edvedenĂ jednoduchosti pouĹľitĂ konfiguraÄŤnĂ knihovny. Nakonec jsou v závÄ›ru shrnutĂ© vĂ˝sledky práce a je vedena diskuze o moĹľnĂ˝ch vylepšenĂch a o pokraÄŤovánĂ projektu.The goal of this thesis is to design a network configuration library with regards to operating system portability and extendability of supported features. To achieve this portable design the thesis explores and analyses the currently available network configuration options of Linux and BSD based operating systems and commonly used network devices. It provides and indepth description of Netlink sockets on Linux as the primary network configuration interface, and ioctl system calls that are used on BSD systems. The gathered information is used to create a portable and extendable library design that separates the configuration interface from its implementation into a hierarchy of abstract classes. Furthermore the class LibNCFG is defined as the entry point of the library which handles object creation and destruction instead of the user. This design provides a high level of extendability and ease of use at the same time. The thesis also describes the chosen parts of the library that were implemented so far. The thesis also describes a simple application that was created to showcase the ease of use of the created library. In the end the library summarizes achieved results and discusses possible improvements and continuation of the project.