1
|
- Miksi TTK-91?
- TTK-91 rakenne ja käskykanta-arkkitehtuuri
- Mikä on simulaattori?
- Miten TTK-91 ohjelmia suoritetaan simulaattorissa?
|
2
|
- Koneen toiminnan ymmärtäminen
- Oman ohjelman toiminnan ymmärtäminen
- Koneenläheinen ohjelmointi
- Kääntäjän tekeminen
- kääntäjä kääntää konekielelle lausekielisen ohjelman
- Ohjelman tehokkuus
- osia ohjelmasta ohjelmoidaan suoraan konekielellä
|
3
|
- Oikeat konekielet huomattavasti monimutkaisempia
- niiden opetteluun tarvitaan oma kurssi
- Vaikeaa valita sopivinta
- paljon erilaisia konekieliä
- Keskitytään vain opetuksen kannalta oleellisiin asioihin
- tarvittaessa oikea konekieli ‘helppo’ oppia
|
4
|
- Laitteisto, hardware (HW)
- suoritin, muisti, väylät, oheislaitteiden liitännät
- Käskykanta - konekieliarkkitehtuuri
- käyttöliittymä laitteistoon
- konekäskyt, tiedon esitysmuodot, tietotyypit
- Symbolinen konekieli
- luettavampi muoto konekielestä
- kullakin symbolilla yksikäsitteiset arvot
- KOKSI simulaattori
- TTK-91 koneen laitteiston simulaattori
- symbolisen konekielen kääntäjä
- graafinen käyttöliittymä, debugger-ympäristö
|
5
|
|
6
|
- 8 yleisrekisteriä
- vain näitä rekistereitä voi koskettaa (suoraan) konekäskyillä
- kaikki laskenta tapahtuu rekistereiden avulla
- vain 8 ”muistipaikkaa” varsinaista laskentaa varten
- R0 työrekisteri
- indeksirekisterinä == 0
(eli jälkimmäisenä operandina R0:n käyttö tarkoittaa lukua 0
rekisterin R0 sisällön asemesta)
- R1-R5 työ- ja indeksirekistereitä
- tyyppi riippuu rekisterin käytöstä konekäskyssä
- pino-osoitin SP (R6)
- ympäristöosoitin FP (R7)
|
7
|
- PC - Program Counter, käskyosoitin
- seuraavaksi suoritettavan konekäskyn osoite
- IR - Instruction Register, käskyrekisteri
- suorituksessa oleva konekäsky
- TR - Temporary Register, apurekisteri
- tilapäinen talletuspaikka käskyn suoritusaikana
- SR - State Register, tilarekisteri
- suorittimen tila ja rajoitukset tällä hetkellä
|
8
|
- Tilatietoa siitä, mitä suorittimella tapahtui edellisen käskyn
suorituksessa
- virhetilanteet, poikkeukset
- konekäsky olikin käyttöjärjestelmän palvelupyyntö
- vertailun tulos
- Tilatietoa siitä, mitä systeemissä tapahtui
viime aikoina
- käsittelemättömät laitteiden antamat signaalit
(laitekeskeytykset, device interrupts)
- Tilatietoa siitä, mitä suoritin saa tehdä jatkossa
- etuoikeutettu tila?
(kaikki muistialueet ja kaikki käskyt sallittuja)
- poikkeusten ja keskeytysten käsittely sallittua vai ei?
|
9
|
|
10
|
- Muistiinviittausrekisterit
- MAR - Memory Address Register, muistiosoite
- MBR - Memory Buffer Register, luettava/kirjoitettava arvo
- Ohjelman käytössä oleva muistialue
- vain tähän alueeseen voi viitata (koodi, data)
- BASE - muistisegmentin alkuosoite
- LIMIT - muistisegmentin koko
- kaikki osoitteet suhteellisia
BASE rekisterin arvoon
- esim. jos BASE=8000, niin käskyssä oleva
osoite 34 viittaa muistiosoitteeseen 8034
- käyttöjärjestelmä asettaa ja valvoo
|
11
|
- Tietotyypit
- Konekäskyjen tyypit
- Konekäskyn rakenne
- montako bittiä, minkälainen sisäinen rakenne
- Muistissa olevan tiedon osoitustavat
- konekielessä
- symbolisessa konekielessä
- Operaatiot
|
12
|
- 32 bittinen kokonaisluku
- noin 10-numeroinen desimaaliluku
- EI:
- liukulukuja
- merkkejä
- totuusarvoja
- …
|
13
|
- Aina 2 operandia itse käskyssä
- aina ei molemmilla ole merkitystä
- Käsky aina 32 bittiä
- Ensimmäinen operandi aina rekisterissä
- Toinen operandi muistissa tai rekisterissä
- luku rekisteristä on nopeampaa kuin muistista hakeminen
- ALU-operaatioiden tulos aina rekisteriin
- korvaa 1. operandin arvon!
|
14
|
- Suora vastaavuus konekieleen
- yksinkertainen assembler-käännös
|
15
|
- Symbolien vastaavuus 1:1 kaikkialla
- viite = muistiosoite (eli tietyn tyyppinen vakio)
- operaatiokoodi eli opcode = vakio
- osoitekentän symboli = vakio tai muistiosoite
- kenttään voi kirjoittaa joko symbolin tai arvon!
- Osoitusmoodi: monimutkaisempi vastaavuus
- konekielessä 3 moodia
- vakio ja/tai rekisteri
(2. operandi =
vakio + indeksirekisterin arvo)
- indeksoitu, epäsuora indeksoitu (tieto muistissa)
- symbolisessa konekielessä 8 moodia
- helpottavat ohjelmointia
- toteutettu konekielen 3 moodin avulla
|
16
|
|
17
|
- 8 eri osoitusmoodia (vain 2. operandille!)
- Tekstuaalisesti koodattuna
- osoitusmoodi
- = vakio [+ rekisterin arvo]
- tyhjä arvo rekisterissä tai muistissa
- @ epäsuora viite muistiin
- sulkumerkit rekisterin ympärillä
- ei sulkuja käytä rekisterin arvoa sellaisenaan
- sulut käytä rekisterin osoittamaa
muistipaikan arvoa
- 0-arvoa ei kirjoiteta näkyviin
- indeksirekisterinä R0 tai vakiona 0
|
18
|
- Laske aina ensin tehollinen muistiosoite (effective address, EA):
- Sitten katso moodia ja tee niin monta muistinoutoa kuin tarvitaan
- ”=”: 0 kpl (vakion
käyttö)
- tyhjä: 1 kpl
- ”@”: 2 kpl
|
19
|
|
20
|
- Taulukot
- taulukon alkuosoite vakiona
- taulukon indeksi indeksirekisterissä
- Tietueet
- tietueen alkuosoite indeksirekisterissä
- tietueen kentän suhteellinen osoite tietueen sisällä vakiona
|
21
|
- Muistiinviittaukset
- tavalliset: load & store
- pino-operaatiot (aliohjelmien toteuttamista varten)
- I/O käskyt
- Kokonaislukuoperaatiot
- Loogiset operaatiot totuusarvoille
- Bittien siirtokäskyt (shift instructions)
- Kontrollin siirtokäskyt
- mistä löytyy seuraavaksi suoritettava käsky?
(ellei se ole seuraavassa muistipaikassa)
- Muut käskyt
|
22
|
- LOAD
- käskyä käytetään myös
rekistereiden kopiointiin (Move operaatio)
- STORE
- PUSH, POP, PUSHR, POPR
- aliohjelmien toteut-
tamista varten
- käsitellään myöhemmin
|
23
|
- IN
- lue arvo (kokonaisluku) rekisteriin annetulta laitteelta
- OUT
- tulosta arvo (kokonaisluku) rekisteristä annetulle laitteelle
- Laitteet?
- KBD - näppäimistö, stdin
- CRT - näyttö, stdout
- ei muita! (ei levyä, ei verkkoa,
…)
|
24
|
- LOAD (”move”)
- ADD, SUB
- MUL
- DIV, MOD
|
25
|
- NOT, AND, OR, XOR
- kaikille 32 bitille
- yksi bitti kerrallaan
|
26
|
- SHL, SHR
- siirrä bittejä vasemmalle tai oikealle
- täytä nollilla
- positiivisilla luvuilla yhden bitin siirto vasemmalle on sama kuin
2:lla kertominen!
- positiivisilla luvuilla yhden bitin siirto
oikealle on sama kuin 2:lla jakaminen!
|
27
|
- JUMP
- COMP
- asettaa tilarekisteriin SR vertailun tuloksen: L, E tai G
- JLES, JEQU, JGRE, JNLES, JNEQU, JNGRE
- perustuu tilarekisterin tietoon eli
viimeksi suoritettuun COMP-käskyyn
- JNEG, JZER, JPOS, JNNEG, JNZER, JNPOS
- perustuu annetun rekisterin arvoon
- CALL, EXIT
- SVC
|
28
|
- NOP
- No OPeration, tyhjä käsky, älä tee mitään
- varaa kuitenkin muistia yhden sanan (32 bittiä)
- suoritetaan samoin kuin muutkin käskyt
|
29
|
- Eivät generoi lainkaan konekäskyjä
- suoritetaan käännösaikana
- EQU - Equal
- antaa arvon symbolille symbolitauluun
- DC - data constant
- varaa yhden sanan tilaa muistista, antaa sille alkuarvon ja antaa
osoitteen symbolin arvoksi (symbolitauluun!)
- esim. muuttujan tai ison vakion määrittely
- DS - data segment
- varaa monta sanaa tilaa muistista, antaa arvon symbolille
- alkuarvot ovat epämääräisiä!
- esim. taulukon tai tietueen tilan varaus
|
30
|
|
31
|
|
32
|
- Toimii kuten oikea kone toimisi
- Graafinen käyttöliittymä
- I/O vain käyttöliittymän kautta
- Ohjelmien valinta (”lataus”), käännös ja suoritus
- Ohjelmien editointi
- myös mikä tahansa tekstieditori kelpaa!
- Käsky kerrallaan suoritus mahdollinen
- Käsky kerrallaan, kommentoinnin kera
|
33
|
- Käytettävissä (DOS, W95, W98, W2000)
- laitoksen koneissa
- kotona
- Installoi itse kotihakemistoosi (n. 120 KB)
- kopioi zip-tiedosto ja pura se koksi-hakemistoon
- editoi koksi.cfg tiedostoon editorin polku
- Ohjelmatiedostojen (hello.k91
jne) tulee olla samassa hakemistossa kuin simulaattorin
(koksi.exe)
- käynnistä (esim.) klikkaamalla koksi.exe
- Eri versioita Linux-ympäristöön
|
34
|
|