Системски софтвер/Пројекат

Извор: SI Wiki
< Системски софтвер
Датум измене: 1. октобар 2022. у 19:31; аутор: TopOfKeks (разговор | доприноси) (WIP)
(разл) ← Старија измена | Тренутна верзија (разл) | Новија измена → (разл)
Пређи на навигацију Пређи на претрагу

Пројекат на предмету Системски софтвер је обавезан и састоји се од 3 програма који чине скуп алата за развој софтвера на апстрактном рачунарском систему. Овај водич тежи да буде независан од поставке, која се незнатно мења из године у годину.

Подела по целинама

Због свог великог обима, препоручује се детаљна разрада захтева на лако разумљиве целине и кораке. Препоручује се следећи редослед задатака:

  1. Табеларно представљање машинских инструкција и адресирања у склопу симболичког машинског језика асемблера и самог машинског кода. Пре него што се крене са имплементацијом лексера и парсера неопходно је детаљно прегледати тражене захтеве у језику.
  2. Израда модела симболичког машинског језика у софтверу. Овде се може применити објектно оријентисани приступ моделовању, или структурни приступ налик излазном формату.
  3. Развој лексера и парсера користећи генераторе flex и bison или писањем свог лексера и парсера.
  4. Израда модела излазних података асемблера. Ово укључује секције, релокације, симболе и све што није било покривено моделовањем језика.
  5. Имплементација самог асемблирања. Пролази се кроз излаз парсера и попуњава излазни модел.
  6. Опционо текстуално/графичко представљање излазних података налик readelf и objdump олакшава дебаговање.
  7. Тестирање асемблера.
  8. Моделовање и имплементација излазног бинарног формата асемблера
  9. Модел улазних података линкера. Могу се користити и структуре из асемблера, али није препоручљиво јер су неопходни подаци за рад линкера и асемблера знатно различити - све постојеће енкапсулације и интерфејси вероватно нису довољно универзални или су ограничавајући.
  10. Имплементација линкера
  11. Имплементација исписа радне меморије у текстуални фајл, као и исписа у претходно осмишљени објектни формат, за шта код не би требало да се знатно разликује.
  12. Тестирање линкера.
  13. Моделовање меморије у емулатору. Учитавање меморије из фајла.
  14. Моделовање процесора, регистара, обраде прекида.
  15. Имплементација емулирања инструкција. Са нагласком на пажљиво писање кода и разумевање поставке.
  16. Имплементација периферије терминал. Препоручује се termios библиотека.
  17. Имплементација периферије тајмер. Препоручује се timerfd библиотека.
  18. Тестирање емулатора.

Асемблер

Линкер

Емулатор

Тестови