Tietokonetekniikka 5 Operandien osoittaminen ja tietokoneen käskykanta
description
Transcript of Tietokonetekniikka 5 Operandien osoittaminen ja tietokoneen käskykanta
5 Operandien osoittaminen ja tietokoneen käskykanta
1
Tietokonetekniikka5 Operandien osoittaminen ja tietokoneen
käskykanta
• Lähde: Haltsonen, S., Rautanen, E.• Pieka 02.02.2009• Kuvagalleria
5 Operandien osoittaminen ja tietokoneen käskykanta
2
5.1 Käskykanta ja käskyryhmät
• Käskyt jaetaan ryhmiin:– Tiedonsiirtokäskyt– Aritmeettiset käskyt– Loogiset käskyt– Sivuttaissiirto- ja rotaatiokäskyt (pyörityskäskyt)– Hyppy- ja haarautumiskäskyt– Syöttö- ja tulostuskäskyt– Ohjauskäskyt
5 Operandien osoittaminen ja tietokoneen käskykanta
3
5.2 Käskyn rakenne
5 Operandien osoittaminen ja tietokoneen käskykanta
4
Käskyn rakenne(instruction format)
Osoitekenttä:Mikäli operandi tai tulos sijaitsee muistissa, sen sijainnin ilmoittavaa käskyn osaa nimitetään osoitekentäksi (address field).Osoitekenttä voi olla useita sanoja ja haku voi viedä useita muistijaksoja.
5 Operandien osoittaminen ja tietokoneen käskykanta
5
Kuva 5-4. Laskentakäskyn ja hyppykäskyn rakenne
a)Laskentakäskyb)Hyppykäsky
5 Operandien osoittaminen ja tietokoneen käskykanta
6
Operandin sijainti
• Operaatio on käskyosa eli koodiosa
• Operandi on kohdeosa tai lähdeosa
• Kohde tai lähde voi olla muistipaikka tai yleiskäyttöinen rekisteri tai I/O –rekisteri (tai rekisteriryhmän indeksi).
5 Operandien osoittaminen ja tietokoneen käskykanta
7
Avainsanoja• Rekisteriin viittaaminen– Rekisteriryhmä, säilytetään välituloksia– Muutaman bitin Indeksikentän käyttö koodissa
• Muistiviittaus– Operandi tai tulos sijaitsevat keskusmuistissa
• Akku, A –rekisteri, laskentarekisteri• Ohjelmalaskuri (EIP)• ALU --- aritmeettislooginen yksikkö• Pino --- pino-osoitin (ESP)
5 Operandien osoittaminen ja tietokoneen käskykanta
8
Kuva 5-3. Käsky, jossa on kolme muistiosoitetta
Käskyn haku vaatii neljä muistiviittausta ja suoritus vaatii kolme muistiviittausta Hidas
5 Operandien osoittaminen ja tietokoneen käskykanta
9
Kuva 5-4. Käsky, jossa on kaksi muistiosoitetta
Käskyn haku vaatii kolme muistiviittausta ja suoritus vaatii kolme muistiviittausta Hidas
5 Operandien osoittaminen ja tietokoneen käskykanta
10
Käsky, jossa on yksi muistiosoite, Akku nopeampi
5 Operandien osoittaminen ja tietokoneen käskykanta
11
Käsky, jossa on yksi muistiosoite ja yksi rekisteriosoite: Rekisteriryhmä
5 Operandien osoittaminen ja tietokoneen käskykanta
12
Käsky, jossa on kaksi rekisteriosoitettaKäskyn suorituksessa ei ole lainkaan muistiviittauksia. NopeaRISC –koneissa käsky on yhden sanan mittainen.Käskyssä ei ole lainkaan muistiviittausta. Ainoa muistiviittaus on käskyn haku.
5 Operandien osoittaminen ja tietokoneen käskykanta
13
Käsky, jossa on kolme rekisteriosoitettaKolmen operandin käskyn periaate
5 Operandien osoittaminen ja tietokoneen käskykanta
14
Nollan osoitteen käskyn periaateOperandit haetaan pinosta ja tulos viedään pinoon.
5 Operandien osoittaminen ja tietokoneen käskykanta
15
5.4 Osoitusmuodot(Addressing mode)
• 1. Operandi käskyssä -välitön osoitus • 2. Operandi rekisterissä -rekisteriosoitus • 3. Operandi muistissa -absoluuttinen osoitus– epäsuora osoitus – Rekisteri epäsuora osoitus – indeksoitu osoitus – kantaosoitus– indeksoitu kantaosoitus– suhteellinen osoitus
5 Operandien osoittaminen ja tietokoneen käskykanta
16
5.4.1 Välitön osoitus(immediate addressing)
• Operandi (kohde- tai lähde) on osa käskyä.• Vakioiden käyttö on helppoa.• Käsky ja operandi voi olla myös kahden sanan
mittainen.
5 Operandien osoittaminen ja tietokoneen käskykanta
17
5.4.2 Rekisteriosoitus(register addressing)
• Operandi (kohde tai lähde) on rekisterissä.• Etua, jos operaation tulosta käytetään hyväksi
seuraavassa käskyssä.
5 Operandien osoittaminen ja tietokoneen käskykanta
18
5.4.3 Absoluuttinen osoitus eli suora muistiosoitus
• Operandi on muistissa ja muistipaikan osoite sisältyy käskyyn. Muistiosoite vie sanan verran tilaa.
• Yksinkertainen tapa viitata muistissa oleviin muuttujiin.• Ei rekisteriosoitus ??? Virhe !!!!
5 Operandien osoittaminen ja tietokoneen käskykanta
19
Kuva 5-13. Muistiosoitteen täydentäminen ohjelmalaskurin avulla
5 Operandien osoittaminen ja tietokoneen käskykanta
20
5.4.4 Rekisteriepäsuora osoitus
5 Operandien osoittaminen ja tietokoneen käskykanta
21
5.4.5 Indeksoitu osoitus ja kantaosoitus
• Indeksoitu osoitus (indexed addressing, Index register addressing)
• Kantaosoitus (based addressing, base register addressing)
• Rekisteriepäsuoran osoituksen ylestyksiä• Muistiosoite saadaan lisäämällä indeksi- tai
kantarekisterin sisältöön käskyssä oleva vakio tai siirros (displament, offset).
5 Operandien osoittaminen ja tietokoneen käskykanta
22
Indeksoitu osoitus ja kantaosoitus
• Jos indeksi- tai kantarekistereitä on useita, käytetty rekisteri on ilmoitettava käskyssä.
• Skaalattu käyttö:– Indeksirekisterin sisältö kerrotaan vakiolla 1, 2, 4 tai 8 ennen
käskyssä olevan siirroksen lisäystä.– Yhdessä muistipaikassa talletettuna on yksi tavu.– Operandi voi olla joka yhden, kahden, neljän tai kahdeksan
tavun mittainen.– Muistissa taulukko laskentakaava n=k*ri+d– k on vakio, ri on indeksirekisterin sisältö ja d on käskyssä
oleva siirros.
5 Operandien osoittaminen ja tietokoneen käskykanta
23
Indeksoitu osoitus ja kantaosoitus
5 Operandien osoittaminen ja tietokoneen käskykanta
24
Taulukon käsittely indeksoitua osoitusta käyttäen
5 Operandien osoittaminen ja tietokoneen käskykanta
25
Tietorakenteen käsittely
• Kuva 5-17 !
5 Operandien osoittaminen ja tietokoneen käskykanta
26
Tietorakenteen käsittely
5 Operandien osoittaminen ja tietokoneen käskykanta
27
5.4.6 Indeksoitu kantaosoitus
5 Operandien osoittaminen ja tietokoneen käskykanta
28
5.4.7 Suhteellinen osoitus
5 Operandien osoittaminen ja tietokoneen käskykanta
29
Mikro-ohjaimen osoitusmuodot
• Katso toinen PPT !
5 Operandien osoittaminen ja tietokoneen käskykanta
30
5.5 Käskykanta
• Katso esim. atMega128:n käskykanta *.pdf !
• Tietokoneen kaikki käskyt
• Jaettu ryhmiin toimintojen mukaan
5 Operandien osoittaminen ja tietokoneen käskykanta
31
5.5.1 Siirtokäskyt(data transfer instruction)
• Esimerkiksi assembler –käskyinä– Move, load , store jne. omina lyhenteinä– Siirtävät tietoa joko muistipaikan ja rekisterin tai
kahden rekisterin välillä
• Pinonkäsittelykäskyt ovat siirtokäskyjä– push Rekisteristä pinon päälle– pop Pinon päältä rekisteriin
5 Operandien osoittaminen ja tietokoneen käskykanta
32
5.5.2 Aritmeettiset käskyt(arithmetic instruction)
• Yhteen-, vähennys-, kerto-, ja jakolaskut• Inkrementointi (incrementing)• Dekrementointi (decrementing)• Vertailu (comparison)• Laskutoimitukset kahdelle luvulle kerrallaan• C-lippu• Liukulukukäskyjä
5 Operandien osoittaminen ja tietokoneen käskykanta
33
5.5.3 Loogiset käskyt(Logical instruction)
• Maskauksen merkitys ja käyttö: AND-, OR- ja XOR –maskaus, ”Bittikuviomuokkaus”
• AND – maskaus: Maskin 1 siirtää (säilyttää) ja 0 nollaa kyseisen bitin
• OR – maskaus: Maskin 1 pakottaa 1:ksi ja 0 siirtää (säilyttää) kyseisen bitin
• XOR – maskaus: Maskin 1 invertoi (kääntää) ja 0 siirtää (säilyttää) kyseisen bitin
5 Operandien osoittaminen ja tietokoneen käskykanta
34
Bittioperaatiot ja Loogiset lausekkeet
• Bittioperaatiot (&, |, ^, ~, <<, >> , Boolen kytkentä algebra bittitasolla)
• Maskina bittikuvio esim. muuttuja = muuttuja & 0x0F;
• • Looginen lauseke (Boolen kytkentä algebra
lauseketasolla)• !, &&, ||, ==, =>, =<...• if ( tosijuttu1 && tosijuttu2 ) teejuttu;
5 Operandien osoittaminen ja tietokoneen käskykanta
35
AND (JA) -operaatioSana 1100 1010Maski 1111 1001Tulos 1100 1000• AND – maskaus: Maskin 1 siirtää (säilyttää) ja 0 nollaa
kyseisen bitinA B F0 0 00 1 01 0 01 1 1
5 Operandien osoittaminen ja tietokoneen käskykanta
36
OR (TAI) -operaatio
Sana 1100 1010Maski 1111 1001Tulos 1111 1011• OR – maskaus: Maskin 1 pakottaa 1:ksi ja 0 siirtää
(säilyttää) kyseisen bitinA B F0 0 00 1 11 0 11 1 1
5 Operandien osoittaminen ja tietokoneen käskykanta
37
NOT (EI) -operaatio
Sana 1100 1010~ 0011 0101• Kääntää eli invertoi bitin arvon ulostuloonTotuustauluA F0 11 0
5 Operandien osoittaminen ja tietokoneen käskykanta
38
XOR (ehdon tai) -operaatio
Sana 1100 1010Maski 1111 1001Tulos 0011 0011• XOR – maskaus: Maskin 1 invertoi (kääntää) ja 0 siirtää
(säilyttää) kyseisen bitinA B F0 0 00 1 11 0 11 1 0
5 Operandien osoittaminen ja tietokoneen käskykanta
39
5.5.4 Sivuttaissiirto- ja rotaatiokäskyt
5 Operandien osoittaminen ja tietokoneen käskykanta
40
Aritmeettinen sivuttaissiirto
Kahdenkomplementtilukujen käsittely
5 Operandien osoittaminen ja tietokoneen käskykanta
41
Looginen sivuttaissiirto
Kahdella kertominen ja jakaminen
5 Operandien osoittaminen ja tietokoneen käskykanta
42
5.5.5 Hyppy- ja haarautumiskäskyt
• Hyppykäskyt (jump instruction)– Ehdottomia tai ehdollisia
• Haarautumiskäskyt (branch instruction)– Suoritetaan vain jos ehto on voimassa.– Taulukossa on annettu ehto ja lippujen avulla
muodostettu looginen lauseke, jonka arvo on yksi, jos ehto on voimassa. Katso taulukot 5-1 ja 5-2 !
5 Operandien osoittaminen ja tietokoneen käskykanta
43
Hyppy- ja haarautumiskäskyt
5 Operandien osoittaminen ja tietokoneen käskykanta
44
Hyppy- ja haarautumiskäskyt
5 Operandien osoittaminen ja tietokoneen käskykanta
45
5.5.6 Aliohjelmakäskyt
• call• return• Ohjelmalaskurin arvo (EIP)
5 Operandien osoittaminen ja tietokoneen käskykanta
46
Aliohjelman periaate
5 Operandien osoittaminen ja tietokoneen käskykanta
47
5.5.7 Syöttö- ja tulostuskäskyt
• I/O -käskyt
5 Operandien osoittaminen ja tietokoneen käskykanta
48
5.5.8 Ohjauskäskyt
• Mm. keskeytysten prioriteettien asettaminen