Stáhnout prezentaci
Prezentace se nahrává, počkejte prosím
1
Instrukce procesoru
2
Strojová instrukce je v informatice označení kódovaného příkazu pro provedení elementární operace procesoru, kterou je procesor schopen přímo vykonat (procesor je základní součástí počítače). Posloupnost strojových instrukcí je označována jako strojový kód. Různé procesory mají různé sady strojových instrukcí. Některé procesory podporují více sad strojových instrukcí (např. současné procesory pro počítače IBM PC kompatibilní podporují sadu x86-16, IA-32 a x86-64, které se celkově označují jako x86).
3
Zápis strojové instrukce
Funkce strojové instrukce se pojmenovává tzv. mnemonikou. Za mnemonikou mohou (ale nemusí) následovat operandy, neboli parametry dané strojové instrukce. Mnemonika Mnemoniky se většinou skládají z několika písmen zkratkovitě v angličtině naznačujících funkci dané strojové instrukce. Například mnemonika SUB (z anglického SUBtract - odečti) se může použít pro operaci odečítání, sub a1, a2; mnemonika CMP (CoMPare) může být použita pro označení strojové instrukce pro porovnání dvou čísel. cmp a1, a2; Pro zápis ani pro implementaci instrukcí neexistují jednotná pravidla, každá rodina procesorů (nebo také architektura) má vlastní instrukční sadu s vlastními mnemonikami, kterou vytváří výrobce procesoru.
4
Zápis strojové instrukce
Operand Jestliže mnemonika označuje co daná strojová instrukce dělá, její operandy určují s čím. Jinými slovy, operand určuje zdrojová nebo cílová data, nad kterými daná strojová instrukce pracuje. sub a1, a2; cmp a1, a2; Operand bývá buď konstantou, nebo adresou v některém z paměťových prostorů počítače. Typicky jsou to adresový prostor registrů a operační paměti. Adresa může být určena buď přímo (tzv. přímé adresování) - jako konstanta určující index buňky v operační paměti počítače. Druhou základní možností je nepřímé adresování, kdy je operandem registr jehož obsah je interpretován jako index buňky v operační paměti počítače.
5
Příklady instrukcí add r0, r2; – sčítání - přičte do registru r0 hodnotu uloženou v registru r2 addc r1, r3; – sčítání s přenosem - přičte do registru r0 hodnotu registru r1 a příznaku přenosu C mov 1234h, r0; – přesun - uloží do paměti na adresu 1234h hodnotu z registru r0 mov [r7], r0; – přesun - uloží na adresu určenou registrem r7 hodnotu z registru r0 cmp r4, r5; – porovnání - porovná hodnoty registrů r4 a r5 jmp END_IF – podmíněný skok jmp r4>, 8100h; – podmíněný skok - pokud byla hodnota registru r4 vyšší, pokračuje program na adrese 8100h Strojové instrukce se dělí podle svého určení na přesunové, aritmeticko-logické a řídící instrukce. Výrobci většinou používají mnohem jemnější rozdělení (např. přesuny, aritmetické, logické, rotace, násobení a dělení, skoky, zásobníkové, systémové instrukce). U některých architektur není situace tak jasná. Například přesunová strojová instrukce, která změní hodnotu v systémovém registru procesoru de-facto přebírá funkci systémové instrukce.
6
Přesunové instrukce Přesunové slouží ke kopírování dat v paměti. Tyto instrukce mají typicky mnemoniku MOV (z angl. move - přesun), případně LD nebo ST (load, store). Prakticky vždy mají dva operandy - zdrojový a cílový, kdy hodnota uložená ve zdrojovém operandu je uložena do cílového operandu.
7
Aritmeticko-logické instrukce
Aritmeticko-logické instrukce slouží k vykonávání aritmetických nebo logických operací. V podstatě jde o to, že se zdrojovými operandy se provede určitá matematická operace, jejíž výsledek je uložen do cílového operandu. Velmi častý je případ, kdy jeden ze zdrojových operandů slouží současně jako cílový. To znamená, že např. instrukce add r0, r1 nejprve sečte hodnoty registrů r0 a r1, přičemž výsledek uloží do registru r0. Typickými funkcemi aritmeticko-logických instrukcí jsou : sčítání (ADD), odečítání (SUB), porovnávání (CMP), bitové logické součty (OR) logické součiny (AND), bitové posuny a rotace. Aritmetické nebo logické nemusí být vždy dvouoperandové, instrukce realizující např. absolutní hodnotu, násobení mínus jedničkou, nebo dvojkový doplněk mají pouze jeden operand. Podle možností daného procesoru se liší šířka operandů (8/16/32 bitů) a jejich typ. Některé procesory (např. PIC) mají pouze instrukce pro jednoduché operace s malými celými čísly (viz byte), jiné mohou přímo pracovat s čísly v plovoucí řádové čárce.
8
Instrukce a příznakové registry
Záměrným vedlejším efektem provedení instrukce obvykle bývá určité nastavení příznakových bitů v procesoru, který za tímto účelem obsahuje takzvaný registr příznaků. Registr příznaků využívají především podmíněné skoky a instrukce pro přičítání nebo odečítání s přenosem. Způsob nastavování příznaků bývá obvykle pro určitou skupinu instrukcí stejný. Zvláštní funkci z tohoto hlediska zastávají instrukce pro porovnávání, protože nemění hodnotu svých operandů, ale pouze nastavují příznakové bity (anglicky flags). Téměř vždy jsou přítomny příznakové bity : N - negative - nastavuje se, když je výsledkem operace záporné číslo Z - zero - nastavuje se, když je výsledkem operace nula C nebo CY - carry - nastavuje se, když došlo při sčítání k přenosu. Při odčítání nebo porovnávání se nastavuje jako výpůjčka, nebo jako negace výpůjčky, to závisí na architektuře CPU. V nebo OV - overflow - nastavuje se, pokud došlo při operaci k přetečení Různé procesory mohou implementovat více, ale jen výjimečně méně příznakových bitů.
9
Řídící instrukce Tyto instrukce mění buď tok programu, nebo způsob, jakým procesor funguje. Základní řídící instrukcí je instrukce skoku (typicky má mnemoniku JMP), která říká, že vykonávání programu nepokračuje následující instrukcí, ale instrukcí která je uložena na adrese definované operandem instrukce JMP. Podobnou funkci má instrukce podmíněného skoku, která se používá v kombinaci s instrukcemi nastavujícími příznakové bity k větvení programu. Ke skoku dojde pouze za předpokladu, že jsou určitým způsobem nastaveny příznakové bity procesoru. Následující instrukce podmíněného skoku (např. JMPR CC_NZ, 1234h - skoč, když není nastaven příznak Z - zero) může například "přehodit výhybku programu", pokud výsledkem kontrolního součtu nebyla nula. Opakovaně využívané sekvence kódu je možné vyvolat pomocí instrukce volání podprogramu (typicky "CALL"), konec podprogramu označuje instrukce návratu z podprogramu (typicky "RET" nebo "RETURN"). Kromě toho mohou některé instrukce měnit způsob chodu procesoru, který může být přepínán mezi dvěma různými soubory instrukcí - mezi "ARM" módem a "thumb" módem. Přičemž instrukční soubor ARM je optimalizovaný na rychlost, zatímco instrukční soubor "thumb" je optimalizovaný na velikost kódu.
10
Kódování instrukcí Aby mohly být instrukce vykonávány procesorem, je nutno je uložit do polovodičové paměti, jako sekvence několikaciferných dvojkových čísel. Tato sekvence se nazývá strojový kód. Výrobce procesoru proto pro každou instrukci definuje, jakým způsobem má být zakódována do paměti počítače. Výrobce procesoru může například stanovit, že každá instrukce je zakódována pomocí 16 bitů (neboli dvojkových cifer). do prvních šesti bitů se zakóduje mnemonika instrukce (šestibitové číslo dovolí implementovat 64 typů instrukcí - mnemonik), do druhých pěti bitů se zakóduje první operand, do posledních pěti bitů se zakóduje druhý operand. Ve skutečnosti bývá kódování instrukcí mnohem složitější, avšak princip je stejný.
Podobné prezentace
© 2024 SlidePlayer.cz Inc.
All rights reserved.