1. Vastaa seuraaviin kysymyksiin:
a) Käskyjen suoritus koostuu useasta vaiheesta. Mitä vaiheet ovat?
b) Missä määrin eri vaiheita voitaisiin suorittaa samanaikaisesti /limittäin?
c) Mitkä tilanteet aiheuttavat keskeytyksen? Miten keskeytys havaitaan ja mitä sitten tapahtuu?
2. Esitä prosessorin rekisterien tasolla miten suoritetaan seuraavat käskyt:
a) MUL R2,@5
b) DIV R2,@R5
c) SUB R5,5(R5)
d) JPOS R5, 100
3. Tee TTK-91:n symbolisella konekielellä aliohjelma Kopioi, joka kopioi muistialueelta Lahde muistialueelle Kohde n:n muistipaikan sisällön. Välitä parametrit Lahde, Kohde ja n pinossa. Laadi lisäksi pääohjelma, joka kopioi sadan muistipaikan sisällön muistialueelta Vanha alueelle Uusi.
4. Voisiko esimerkkitietokoneessa TTK-91 aliohjelmien kutsurakenteen aktivointitietueiden käsittelyineen toteuttaa ilman käskyjä CALL ja EXIT? Miten tämä onnistuisi (mikäli se siis olisi mahdollista)?
5. Suunnittele, miten suuria joukkoja (esim. kokonaislukujoukot) voitaisiin tehokkaasti esittää konekielitasolla.
6. Alla on annettu Fibonaccin luvut laskeva ohjelma (pääohjelma ja rekursiivinen aliohjelma; F0 = 1, F1 = 1, Fn = F(n-1)+F(n-2). Toimiiko ohjelma? Jos ei, niin korjaa se. Jos toimii, simuloi sitä. Kuinka monta kertaa funktiota F itse asiassa kutsutaan, jos m=3?
m DS 1 1: LaskeF IN R1, =KBD 2: STORE R1, m 3: PUSH SP, =0 4: PUSH SP, R1 5: CALL SP, F 6: POP SP, R2 7: OUT R2, =CRT N EQU -2 F_RET EQU -3 8: F LOAD R1, N(FP) 9: JNZER R1, *+4 10: ADD R1, =1 11: STORE R1, F_RET(FP) 12: JUMP LOPPU 13: COMP R1, =1 14: JNEQU *+3 15: STORE R1, F_RET(FP) 16: JUMP LOPPU 17: LOAD R2, R1 18: SUB R2, =1 19: LOAD R3, R2 20: SUB R3, =1 21: PUSH SP, =0 22: PUSH SP, R2 23: CALL SP, F 24: POP SP, R2 25: PUSH SP, =0 26: PUSH SP, R3 27: CALL SP, F 28: POP SP, R3 29: ADD R2, R3 30: STORE R2, F_RET(FP) 31: LOPPU EXIT SP, =1