Sistemski softver/Projekat

Izvor: SI Wiki
< Системски софтвер
Datum izmene: 1. oktobar 2022. u 19:31; autor: TopOfKeks (razgovor | doprinosi) (WIP)
(razl) ← Starija izmena | Trenutna verzija (razl) | Novija izmena → (razl)
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:

  1. 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.
  2. Izrada modela simboličkog mašinskog jezika u softveru. Ovde se može primeniti objektno orijentisani pristup modelovanju, ili strukturni pristup nalik izlaznom formatu.
  3. Razvoj leksera i parsera koristeći generatore flex i bison ili pisanjem svog leksera i parsera.
  4. Izrada modela izlaznih podataka asemblera. Ovo uključuje sekcije, relokacije, simbole i sve što nije bilo pokriveno modelovanjem jezika.
  5. Implementacija samog asembliranja. Prolazi se kroz izlaz parsera i popunjava izlazni model.
  6. Opciono tekstualno/grafičko predstavljanje izlaznih podataka nalik readelf i objdump olakšava debagovanje.
  7. Testiranje asemblera.
  8. Modelovanje i implementacija izlaznog binarnog formata asemblera
  9. 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.
  10. Implementacija linkera
  11. 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.
  12. Testiranje linkera.
  13. Modelovanje memorije u emulatoru. Učitavanje memorije iz fajla.
  14. Modelovanje procesora, registara, obrade prekida.
  15. Implementacija emuliranja instrukcija. Sa naglaskom na pažljivo pisanje koda i razumevanje postavke.
  16. Implementacija periferije terminal. Preporučuje se termios biblioteka.
  17. Implementacija periferije tajmer. Preporučuje se timerfd biblioteka.
  18. Testiranje emulatora.

Asembler

Linker

Emulator

Testovi