32
1 Instrukce Instrukce Ve von Neumannovské koncepci (architektuře) počítačů jde vlastně o zvláštní typ dat

Instrukce

Embed Size (px)

DESCRIPTION

Instrukce. Ve von Neumannovské koncepci (architektuře) počítačů jde vlastně o zvláštní typ dat. Instrukční soubor. styčný bod mezi návrhářem počítače a programátorem v abstraktním smyslu programátor nemá znát fyzický návrh – obvodové řešení - PowerPoint PPT Presentation

Citation preview

Page 1: Instrukce

11

InstrukceInstrukce

Ve von Neumannovské koncepci (architektuře) počítačů jde vlastně o zvláštní typ dat

Page 2: Instrukce

22

Instrukční souborInstrukční soubor

styčný bod mezi návrhářem počítače a styčný bod mezi návrhářem počítače a programátoremprogramátorem

v abstraktním smyslu programátor nemá v abstraktním smyslu programátor nemá znát fyzický návrh – obvodové řešeníznát fyzický návrh – obvodové řešení

musí ale znát logický návrh, tedymusí ale znát logický návrh, tedynapř. registrový a adresový modelnapř. registrový a adresový model

Page 3: Instrukce

33

Instrukční sadaInstrukční sada

Instrukční sada musí být:Instrukční sada musí být: funkčně úplnáfunkčně úplná

musí dovolit uživateli formulovat libovolnou musí dovolit uživateli formulovat libovolnou úlohu zpracování jeho dat na vyšší úrovniúlohu zpracování jeho dat na vyšší úrovni

účinnáúčinná často opakované funkce by měly být často opakované funkce by měly být

prováděny rychle a za pomoci malého prováděny rychle a za pomoci malého počtu instrukcípočtu instrukcí

Page 4: Instrukce

44

Obsah instrukceObsah instrukce

Každá instrukce musí obsahovat:Každá instrukce musí obsahovat:

1.1. operační kód (jaká operace má být operační kód (jaká operace má být

vykonána)vykonána)

2.2. odkaz a určení zdrojových operandůodkaz a určení zdrojových operandů

3.3. umístění a určení výsledkuumístění a určení výsledku

4.4. odkaz na další instrukciodkaz na další instrukci

Page 5: Instrukce

55

Modalita instrukcíModalita instrukcí

modalita operačního kódumodalita operačního kódu např. směr rotacenapř. směr rotace

modalita operandůmodalita operandů např. velikost a umístěnínapř. velikost a umístění

modalita ochrany (paměti)modalita ochrany (paměti) např. úroveň procesunapř. úroveň procesu

Page 6: Instrukce

66

Modalita operačního kóduModalita operačního kódu

upřesnění operaceupřesnění operace směr a vzdálenost rotacesměr a vzdálenost rotace způsob testování podmínky v způsob testování podmínky v

podmíněném skokupodmíněném skoku směr operace load/storesměr operace load/store použití operandů (paměť / registry)použití operandů (paměť / registry) úprava výsledku po provedení operaceúprava výsledku po provedení operace

Page 7: Instrukce

77

Modalita operandůModalita operandů

způsob adresace způsob adresace přímé, nepřímé, ...přímé, nepřímé, ...

velikost a typ operandůvelikost a typ operandůstejnou instrukci možno vykonat nad stejnou instrukci možno vykonat nad

různými datyrůznými daty ovlivňuje přípravu instrukceovlivňuje přípravu instrukce

vícestupňové načítánívícestupňové načítání vícenásobné načítánívícenásobné načítání

Page 8: Instrukce

88

Modalita ochranyModalita ochrany

přístupová práva k operandům přístupová práva k operandům ochrana pamětiochrana paměti

právo vykonání instrukce právo vykonání instrukce ochrana OS, procesuochrana OS, procesu

Page 9: Instrukce

99

Dělení instrukcí Dělení instrukcí IIPodle počtu operandůPodle počtu operandů

• bezadresovébezadresové• jednoadresovéjednoadresové• dvouadresovédvouadresové• tříadresovétříadresové• (čtyřadresové)(čtyřadresové)

Page 10: Instrukce

1010

Bezadresové instrukceBezadresové instrukce

bez operandů bez operandů (NOP, RET)(NOP, RET) operandy dány implicitněoperandy dány implicitně

operand dán operačním kódem (CLI, TBA)operand dán operačním kódem (CLI, TBA) operace nad zásobníkem – operace nad zásobníkem – zásobníková zásobníková

architekturaarchitekturavšechny operandy jsou na (vršku) zásobníkuvšechny operandy jsou na (vršku) zásobníku

instrukce jich ze zásobníku vyzvedne potřebný instrukce jich ze zásobníku vyzvedne potřebný početpočet

instrukce je vykonánainstrukce je vykonána

případný výsledek je uložen zpět na zásobníkpřípadný výsledek je uložen zpět na zásobník

Page 11: Instrukce

1111

Jednoadresové instrukceJednoadresové instrukce

zbývající dvě adresy (operandy) dány zbývající dvě adresy (operandy) dány implicitněimplicitně

obvyklé pro obvyklé pro akumulátorovou akumulátorovou architekturuarchitekturuADD xADD x ... Acc := Acc + x... Acc := Acc + x

Page 12: Instrukce

1212

Dvouadresové instrukceDvouadresové instrukce

jedna z adres je použita jak pro jedna z adres je použita jak pro operand, operand, tak pro výsledektak pro výsledek

Velmi obvykléVelmi obvykléSUB A,4 ... A := A – 4SUB A,4 ... A := A – 4

Page 13: Instrukce

1313

Tříadresové instrukceTříadresové instrukce

určeny jak oba operandy, tak umístění určeny jak oba operandy, tak umístění výsledkuvýsledku

pro větší délku instrukcí a výslednou délku pro větší délku instrukcí a výslednou délku instrukčního slova se nepoužívá častoinstrukčního slova se nepoužívá často

se zvyšováním rychlosti pamětí roste se zvyšováním rychlosti pamětí roste flexibilita počítače a dává velké možnosti flexibilita počítače a dává velké možnosti dobrým kompilátorům (nahrazovat dobrým kompilátorům (nahrazovat tříadresové instrukce dvouadresovými). tříadresové instrukce dvouadresovými).

Page 14: Instrukce

1414

Zápis výrazuZápis výrazu

Infixová notaceInfixová notace

(A-B) / (C+D*E)(A-B) / (C+D*E) Postfixová notacePostfixová notace

AB-CDE*+AB-CDE*+// Prefixová notacePrefixová notace

/-AB+C*DE/-AB+C*DE

(převod z infixové notace do postfixové a (převod z infixové notace do postfixové a prefixové notace pomocí gramatiky výrazu)prefixové notace pomocí gramatiky výrazu)

Page 15: Instrukce

1515

Gramatika výrazuGramatika výrazu

lze popsat lze popsat stromemstromem

(A(A––B) / (C+D*E)B) / (C+D*E) AB-CDE*+AB-CDE*+// /-AB+C*DE/-AB+C*DE A B

-

C

D E

*

+

/

Page 16: Instrukce

1616

Reverzní polská notaceReverzní polská notace

Snadný výpočet pomocí zásobníkuSnadný výpočet pomocí zásobníku Vstup – výraz v RPN:Vstup – výraz v RPN:

číslo (proměnná): uložit na zásobníkčíslo (proměnná): uložit na zásobník operace: operace:

vyzvednout potřebný počet vyzvednout potřebný počet operandůoperandů provést operaciprovést operaci

výsledek uložit na zásobníkvýsledek uložit na zásobník

Page 17: Instrukce

1717

YY = (A = (A––B) / (C+D*E)B) / (C+D*E)YY = AB = AB––CDE*+/CDE*+/

33––adresovadresovéé

2–2–adresoadresovvéé

1–1–adresovéadresové

0–0–adresovéadresové

SUBSUB Y,A,BY,A,B

MULMUL T,D,ET,D,E

ADDADD T,T,CT,T,C

DIVDIV Y,Y,TY,Y,T

MOVMOV Y,AY,A

SUBSUB Y,BY,B

MOVMOV T,DT,D

MULMUL T,ET,E

ADDADD T,CT,C

DIVDIV Y,TY,T

LOADLOAD DD

MULMUL EE

ADDADD CC

STORESTORE YY

LOADLOAD AA

SUBSUB BB

DIVDIV YY

STORESTORE YY

PUSHPUSH AA

PUSHPUSH BB

SUBSUB

PUSHPUSH CC

PUSHPUSH DD

PUSHPUSH EE

MULMUL

ADDADD

DIVDIV

POPPOP YY

Page 18: Instrukce

1818

Dělení instrukcí IDělení instrukcí IIIPodle typu operacePodle typu operace

1.1. aritmetické operacearitmetické operace

2.2. logické operacelogické operace

3.3. operace pro přesun dat uvnitř operace pro přesun dat uvnitř počítačepočítače

4.4. operace pro vstup/výstup dat do/z operace pro vstup/výstup dat do/z počítačepočítače

5.5. řídící operaceřídící operace

Page 19: Instrukce

1919

1. aritmetick1. aritmetické instrukceé instrukce

základní výpočetní operacezákladní výpočetní operace+ – * /+ – * /

abs, neg, inc, decabs, neg, inc, dec speciální aritmetické operacespeciální aritmetické operace

práce v plovoucí řádové čárcepráce v plovoucí řádové čárce

logaritmy, odmocniny, ......logaritmy, odmocniny, ...... typové konverze, překladytypové konverze, překlady

Page 20: Instrukce

2020

2. logické instrukce2. logické instrukce

Booleovské operaceBooleovské operaceAND, OR, NOT, XORAND, OR, NOT, XOR

Porovnávání, testPorovnávání, testpouze nastavení příznakůpouze nastavení příznaků

Posuny a rotacePosuny a rotacepozor na znaménkopozor na znaménko

Page 21: Instrukce

2121

3. přesuny dat3. přesuny dat

typické pro Load/Store architekturutypické pro Load/Store architekturu

4. vstup/výstup4. vstup/výstup přesuny dat z/na periferiepřesuny dat z/na periferie obsluha periferiíobsluha periferií

start, teststart, test

Page 22: Instrukce

2222

5. řídící instrukce5. řídící instrukce

skokyskokynepodmíněný, podmíněnýnepodmíněný, podmíněný

volání podprogramu, návratvolání podprogramu, návrat řízenířízení

executeexecute

skip skip

halt, wait, nophalt, wait, nop

Page 23: Instrukce

2323

Určení argumentůUrčení argumentů

implicitněimplicitněparametry dány použitou instrukcíparametry dány použitou instrukcí

explicitněexplicitněsoučástí zápisu instrukce je odkaz na součástí zápisu instrukce je odkaz na

parametryparametry

nutno jasně definovat při návrhu nutno jasně definovat při návrhu instrukční sadyinstrukční sady

Page 24: Instrukce

2424

Způsoby adresaceZpůsoby adresace

immediate – immediate – bezprostřední zápis v instrukcibezprostřední zápis v instrukci direct direct – v instrukci zapsána adresa operandu– v instrukci zapsána adresa operandu indirectindirect – odkaz do paměti, kde je adresa oper. – odkaz do paměti, kde je adresa oper. indexedindexed – – k adrese je pk adrese je přičten indexřičten index basedbased – adresa tvoří posunutí vzhledem k bázi – adresa tvoří posunutí vzhledem k bázi relativerelative – vzhledem k adresovému čítači – vzhledem k adresovému čítači

Page 25: Instrukce

2525

Immediate ModeImmediate Mode

operand je obsažen v instrukcioperand je obsažen v instrukci data jsou za běhu kódu konstantnídata jsou za běhu kódu konstantní po načtení instrukce není třeba po načtení instrukce není třeba

přistupovat do pamětipřistupovat do paměti velikost operandu je omezená velikost operandu je omezená

formátem instrukcíformátem instrukcí

opcodeopcode datadata

Page 26: Instrukce

2626

Direct ModeDirect Mode

v instrukci je zapsána adresa v instrukci je zapsána adresa operanduoperandu

k vykonání instrukce je třeba navíc k vykonání instrukce je třeba navíc jeden přístup k pamětijeden přístup k paměti

rozsah adres limitován velikostí rozsah adres limitován velikostí instrukceinstrukce

adresa operandu je konstantní, data adresa operandu je konstantní, data se mohou měnitse mohou měnitopcodeopcode addraddr datadata

Page 27: Instrukce

2727

Indirect ModeIndirect Mode

v instrukci je adresa, na které se v v instrukci je adresa, na které se v paměti nachází operandpaměti nachází operand

k vykonání instrukce jsou třeba 2 k vykonání instrukce jsou třeba 2 přístupy navíc:přístupy navíc: načtení adresy operandunačtení adresy operandu přístup k operandupřístup k operandu

opcodeopcode addraddr

datadata

…… addraddr

Page 28: Instrukce

2828

Indexed Mode, Base ModeIndexed Mode, Base Mode

výsledná adresa složena ze dvou částí:výsledná adresa složena ze dvou částí: základzáklad posunutíposunutí

velmi podobné, někdy se nerozlišujevelmi podobné, někdy se nerozlišuje ppři rozlišování – podle toho, kdo to dělá:ři rozlišování – podle toho, kdo to dělá:

indexed: v programu pro přístup k datůmindexed: v programu pro přístup k datům based: v OS pro implementaci based: v OS pro implementaci

ochrany/segmentaceochrany/segmentace

Page 29: Instrukce

2929

Indexed modeIndexed mode

opcodeopcode i-regi-reg basebase

datadata

…… indexindex

+

Page 30: Instrukce

3030

BasBased modeed mode

datadata

…… basebase

+

opcodeopcode b-regb-reg offsetoffset

Page 31: Instrukce

3131

Relative ModeRelative Mode

operand je určen relativně vzhledem operand je určen relativně vzhledem k programovému čítačik programovému čítači

typický případ: relativní odskok v typický případ: relativní odskok v cyklucyklu

…… opcodeopcode relrel

Page 32: Instrukce

3232

Adresace s Adresace s použitím použitím registrregistrůů

Některá ze zúčastněných adres je z Některá ze zúčastněných adres je z domény registrů, nikoli hlavní pamětidomény registrů, nikoli hlavní paměti

Register addressingRegister addressing jako jako directdirect, ale adresová část určuje registr, ale adresová část určuje registr

Register indirectRegister indirect jako jako indirectindirect, ale adresová část určuje , ale adresová část určuje

registr, který obsahuje adresu operanduregistr, který obsahuje adresu operandu