Notes
Slide Show
Outline
1
Luento 2
TTK-91 tietokone ja sen
KOKSI simulaattori
  • Miksi TTK-91?
  • TTK-91 rakenne ja käskykanta-arkkitehtuuri
  • Mikä on simulaattori?
  • Miten TTK-91 ohjelmia suoritetaan simulaattorissa?
2
Miksi konekieltä?
  • 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
Miksi ei oikeaa konekieltä?
  • 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
Tietokone TTK-91
  • 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
TTK-91 laitteisto
6
TTK-91 rekisterit
  • 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
TTK-91 Kontrolliyksikkö (CU)
  • 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
TTK-91 Tilarekisteri SR
  • 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
Tilarekisteri SR (9)
10
TTK-91 Muistinhallintayksikkö
              (MMU)
  • 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
TTK-91 Käskykanta
  • Tietotyypit
  • Konekäskyjen tyypit
  • Konekäskyn rakenne
    • montako bittiä, minkälainen sisäinen rakenne
  • Muistissa olevan tiedon osoitustavat
    • konekielessä
    • symbolisessa konekielessä
  • Operaatiot
12
TTK-91 tietotyypit
  • 32 bittinen kokonaisluku
    • noin 10-numeroinen desimaaliluku
  • EI:
    • liukulukuja
    • merkkejä
    • totuusarvoja
    • …
13
TTK-91 käskytyypit
  • Aina 2 operandia itse käskyssä
    • aina ei molemmilla ole merkitystä
      • JUMP
      • NOP
  • 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
Symbolinen konekieli (7)
  • Suora vastaavuus konekieleen
    • yksinkertainen assembler-käännös
15
Symbolinen konekieli
  • 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
Symbolinen konekieli
vs. konekieli (3)
17
Tiedon osoitusmuodot
symbolisessa konekielessä
  • 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
Indeksointi
  • 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
TTK-91 muistin osoitusmoodit (8)
20
Indeksoinnin käyttö taulukkojen ja tietueiden yhteydessä
  • Taulukot
    • taulukon alkuosoite vakiona
    • taulukon indeksi indeksirekisterissä
  • Tietueet
    • tietueen alkuosoite indeksirekisterissä
    • tietueen kentän suhteellinen osoite tietueen sisällä vakiona
21
TTK-91 operaatiot
  • 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
TTK-91 muistiinviittausoperaatiot
  • LOAD
    • käskyä käytetään myös
      rekistereiden kopiointiin (Move operaatio)
  • STORE
    • tallettaa aina muistiin
  • PUSH, POP, PUSHR, POPR
    • aliohjelmien toteut-
      tamista varten
    • käsitellään myöhemmin
23
TTK-91  I/O operaatiot
  • 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
TTK-91
 kokonaislukuoperaatiot
  • LOAD (”move”)
  • ADD, SUB
  • MUL
  • DIV, MOD
25
TTK-91 
loogiset operaatiot (4)
  • NOT, AND, OR, XOR
    • kaikille 32 bitille
    • yksi bitti kerrallaan
26
TTK-91 
bittien siirtokäskyt
  • 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
TTK-91 
kontrollin siirtokäskyt
  • 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
TTK-91 muut käskyt
  • NOP
    • No OPeration, tyhjä käsky, älä tee mitään
    • varaa kuitenkin muistia yhden sanan (32 bittiä)
    • suoritetaan samoin kuin muutkin käskyt


29
TTK-91 assembler
kääntäjän ohjauskäskyt
  • 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
TTK-91 symbolinen konekieliohjelma
31
TTK-91 symbolinen konekieliohjelma
32
KOKSI
TTK-91 -koneen simulaattori
  • 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
KOKSI
  • 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
-- Luennon 2 loppu --