Sistemski softver/Februar 2023

Izvor: SI Wiki
Pređi na navigaciju Pređi na pretragu

Ispit u februarskom roku 2023. godine održan je 10. februara i trajao je dva sata.

1. zadatak

Postavka

Odrediti vrednost pri obradi od strane asemblera za hipotetičku mašinu (ukoliko vrednost nije poznata napisati znak pitanja) i indeks klasifikacije za svaki izraz u okviru izvornog asemblerskog koda datog u nastavku.

        BEG
        USE LAB1
        ORG 0x60
        SCT DAT
LAB2    DC LAB1
        DC 7 + LAB2
        SCT TXT
LAB3    LDA LAB2 - 1
        ADX * - LAB3
        END

Rešenje

Jako sličan zadatak pojavio se na drugom kolokvijumu 2022. godine, gde je rešen.

2. zadatak

Isti zadatak kao iz junskog roka 2022. godine.

3. zadatak

Isti zadatak kao iz avgustovskog roka 2022. godine.

4. zadatak

Ovaj zadatak nije rešen. Pomozite SI Wiki tako što ćete ga rešiti.

Postavka

Posmatra se emulator za HYPO mašinu zasnovan na dinamičkoj rekompilaciji. Emulator je predviđen za izvršavanje na amd64 arhitekturi.

  1. Prikazati kod kojim je neophodno završiti svaki prevedeni blok bez ikakvih optimizacija po pitanju čuvanja vrednosti registara, u slučaju kada iz bloka ima samo jedan izlaz (na kraju bloka se ne nalazi instrukcija uslovnog skoka).
  2. Prikazati kod koji je na početku svakog prevedenog bloka potrebno umetnuti kako bi se blok korektno izvršio bez obzira što se između prethodnog i posmatranog bloka izvršavao i kod emulatora.
  3. Prikazati izmene koje u prethodno prikazanim segmentima koda nastanu ukoliko emulator po saznanju da je odredišni blok preveden maksimalno optimizuje kod po pitanju uštede vremena na instrukcije za čuvanje i restauraciju vrednosti registara, kao i na kod za povratak u emulator (koji više nije potreban).
  4. Da li je prilikom prevođenja koda moguće u potpunosti odstraniti kod za čuvanje i restauraciju vrednosti registara u opštem slučaju? Ako da, kako? Ako ne, zašto?

Rešenje