Sistemski softver/Projekat
Pređi na navigaciju
Pređi na pretragu
Projekat na predmetu Sistemski softver je obavezan i sastoji se od 3 programa koji čine skup alata za razvoj softvera na apstraktnom računarskom sistemu. Ovaj vodič teži da bude nezavisan od postavke, koja se neznatno menja iz godine u godinu.
Podela po celinama
Zbog svog velikog obima, preporučuje se detaljna razrada zahteva na lako razumljive celine i korake. Preporučuje se sledeći redosled zadataka:
- Tabelarno predstavljanje mašinskih instrukcija i adresiranja u sklopu simboličkog mašinskog jezika asemblera i samog mašinskog koda. Pre nego što se krene sa implementacijom leksera i parsera neophodno je detaljno pregledati tražene zahteve u jeziku.
- Izrada modela simboličkog mašinskog jezika u softveru. Ovde se može primeniti objektno orijentisani pristup modelovanju, ili strukturni pristup nalik izlaznom formatu.
- Razvoj leksera i parsera koristeći generatore flex i bison ili pisanjem svog leksera i parsera.
- Izrada modela izlaznih podataka asemblera. Ovo uključuje sekcije, relokacije, simbole i sve što nije bilo pokriveno modelovanjem jezika.
- Implementacija samog asembliranja. Prolazi se kroz izlaz parsera i popunjava izlazni model.
- Opciono tekstualno/grafičko predstavljanje izlaznih podataka nalik readelf i objdump olakšava debagovanje.
- Testiranje asemblera.
- Modelovanje i implementacija izlaznog binarnog formata asemblera
- Model ulaznih podataka linkera. Mogu se koristiti i strukture iz asemblera, ali nije preporučljivo jer su neophodni podaci za rad linkera i asemblera znatno različiti - sve postojeće enkapsulacije i interfejsi verovatno nisu dovoljno univerzalni ili su ograničavajući.
- Implementacija linkera
- Implementacija ispisa radne memorije u tekstualni fajl, kao i ispisa u prethodno osmišljeni objektni format, za šta kod ne bi trebalo da se znatno razlikuje.
- Testiranje linkera.
- Modelovanje memorije u emulatoru. Učitavanje memorije iz fajla.
- Modelovanje procesora, registara, obrade prekida.
- Implementacija emuliranja instrukcija. Sa naglaskom na pažljivo pisanje koda i razumevanje postavke.
- Implementacija periferije terminal. Preporučuje se termios biblioteka.
- Implementacija periferije tajmer. Preporučuje se timerfd biblioteka.
- Testiranje emulatora.