Tietokonetekniikka 5 Operandien osoittaminen ja tietokoneen käskykanta • Lähde: Haltsonen, S., Rautanen, E. • Pieka 02.02.2009 • Kuvagalleria 5 Operandien osoittaminen ja tietokoneen käskykanta.

Download Report

Transcript Tietokonetekniikka 5 Operandien osoittaminen ja tietokoneen käskykanta • Lähde: Haltsonen, S., Rautanen, E. • Pieka 02.02.2009 • Kuvagalleria 5 Operandien osoittaminen ja tietokoneen käskykanta.

Tietokonetekniikka
5 Operandien osoittaminen ja
tietokoneen käskykanta
• Lähde: Haltsonen, S., Rautanen, E.
• Pieka 02.02.2009
• Kuvagalleria
5 Operandien osoittaminen ja tietokoneen
käskykanta
1
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
2
5.2 Käskyn
rakenne
5 Operandien osoittaminen ja tietokoneen
käskykanta
3
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
4
Kuva 5-4. Laskentakäskyn ja
hyppykäskyn rakenne
a)Laskentakäsky
b)Hyppykäsky
5 Operandien osoittaminen ja tietokoneen
käskykanta
5
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
6
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
7
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
8
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
9
Käsky, jossa on yksi muistiosoite,
Akku  nopeampi
5 Operandien osoittaminen ja tietokoneen
käskykanta
10
Käsky, jossa on yksi muistiosoite ja yksi
rekisteriosoite: Rekisteriryhmä
5 Operandien osoittaminen ja tietokoneen
käskykanta
11
Käsky, jossa on kaksi rekisteriosoitetta
Käskyn suorituksessa ei ole lainkaan muistiviittauksia.  Nopea
RISC –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
12
Käsky, jossa on kolme rekisteriosoitetta
Kolmen operandin käskyn periaate
5 Operandien osoittaminen ja tietokoneen
käskykanta
13
Nollan osoitteen käskyn periaate
Operandit haetaan pinosta ja tulos viedään pinoon.
5 Operandien osoittaminen ja tietokoneen
käskykanta
14
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
15
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
16
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
17
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
18
Kuva 5-13. Muistiosoitteen
täydentäminen ohjelmalaskurin avulla
5 Operandien osoittaminen ja tietokoneen
käskykanta
19
5.4.4 Rekisteriepäsuora osoitus
5 Operandien osoittaminen ja tietokoneen
käskykanta
20
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
21
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
22
Indeksoitu osoitus ja kantaosoitus
5 Operandien osoittaminen ja tietokoneen
käskykanta
23
Taulukon käsittely indeksoitua osoitusta
käyttäen
5 Operandien osoittaminen ja tietokoneen
käskykanta
24
Tietorakenteen käsittely
• Kuva 5-17 !
5 Operandien osoittaminen ja tietokoneen
käskykanta
25
Tietorakenteen käsittely
5 Operandien osoittaminen ja tietokoneen
käskykanta
26
5.4.6 Indeksoitu kantaosoitus
5 Operandien osoittaminen ja tietokoneen
käskykanta
27
5.4.7 Suhteellinen osoitus
5 Operandien osoittaminen ja tietokoneen
käskykanta
28
Mikro-ohjaimen osoitusmuodot
• Katso toinen PPT !
5 Operandien osoittaminen ja tietokoneen
käskykanta
29
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
30
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
31
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
32
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
33
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
34
AND (JA) -operaatio
Sana
1100 1010
Maski
1111 1001
Tulos
1100 1000
• AND – maskaus: Maskin 1 siirtää (säilyttää) ja 0 nollaa
kyseisen bitin
A
0
0
1
1
B
0
1
0
1
F
0
0
0
1
5 Operandien osoittaminen ja tietokoneen
käskykanta
35
OR (TAI) -operaatio
Sana
1100 1010
Maski
1111 1001
Tulos
1111 1011
• OR – maskaus: Maskin 1 pakottaa 1:ksi ja 0
siirtää (säilyttää) kyseisen bitin
A
B
F
0
0
0
0
1
1
1
0
1
1
1
1
5 Operandien osoittaminen ja tietokoneen
käskykanta
36
NOT (EI) -operaatio
Sana 1100 1010
~
0011 0101
• Kääntää eli invertoi bitin arvon ulostuloon
Totuustaulu
A
F
0
1
1
0
5 Operandien osoittaminen ja tietokoneen
käskykanta
37
XOR (ehdon tai) -operaatio
Sana
1100 1010
Maski
1111 1001
Tulos
0011 0011
• XOR – maskaus: Maskin 1 invertoi (kääntää) ja 0
siirtää (säilyttää) kyseisen bitin
A
B
F
0
0
0
0
1
1
1
0
1
1
1
0
5 Operandien osoittaminen ja tietokoneen
käskykanta
38
5.5.4 Sivuttaissiirto- ja rotaatiokäskyt
5 Operandien osoittaminen ja tietokoneen
käskykanta
39
Aritmeettinen sivuttaissiirto
Kahdenkomplementtilukujen käsittely
5 Operandien osoittaminen ja tietokoneen
käskykanta
40
Looginen sivuttaissiirto
Kahdella kertominen ja jakaminen
5 Operandien osoittaminen ja tietokoneen
käskykanta
41
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
42
Hyppy- ja haarautumiskäskyt
5 Operandien osoittaminen ja tietokoneen
käskykanta
43
Hyppy- ja haarautumiskäskyt
5 Operandien osoittaminen ja tietokoneen
käskykanta
44
5.5.6 Aliohjelmakäskyt
• call
• return
• Ohjelmalaskurin arvo (EIP)
5 Operandien osoittaminen ja tietokoneen
käskykanta
45
Aliohjelman periaate
5 Operandien osoittaminen ja tietokoneen
käskykanta
46
5.5.7 Syöttö- ja tulostuskäskyt
• I/O -käskyt
5 Operandien osoittaminen ja tietokoneen
käskykanta
47
5.5.8 Ohjauskäskyt
• Mm. keskeytysten prioriteettien asettaminen
5 Operandien osoittaminen ja tietokoneen
käskykanta
48