Upload
stuart-nicholson
View
30
Download
4
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
11
InstrukceInstrukce
Ve von Neumannovské koncepci (architektuře) počítačů jde vlastně o zvláštní typ dat
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
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í
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
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
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
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í
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
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é)
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
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
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
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).
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)
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
*
+
/
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
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
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
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
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
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
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
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
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
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
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
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
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
2929
Indexed modeIndexed mode
opcodeopcode i-regi-reg basebase
datadata
…… indexindex
+
3030
BasBased modeed mode
datadata
…… basebase
+
opcodeopcode b-regb-reg offsetoffset
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
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