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