Jakýkoli CPU je od základu navržen tak, aby podporoval konkrétní sadu instrukcí. Instrukční sada je sada pevně zakódovaných operací, které může CPU provádět. Těmito operacemi může být například sečtení dvou čísel, skok do jiné části programu nebo porovnání dvou hodnot. Každá operace, kterou může počítač provést, je jednoznačně reprezentována operačním kódem.
Operační kódy
Při provádění programu CPU používá programový čítač ke sledování, která instrukce musí být provedena jako další. Když je instrukce vyzvednuta, programový čítač se zvýší o délku instrukce tak, aby ukazoval na začátek další instrukce. Každá instrukce se skládá z operačního kódu. V závislosti na instrukci může nebo nemusí obsahovat operandy. Operandy mohou být konstantní hodnota nebo ukazatel na umístění hodnoty v registru CPU nebo v systémové RAM.
Jakmile je načtena kompletní instrukce, je třeba ji dekódovat. Toto je proces, kdy CPU odděluje operační kód a jakékoli operandy. Dekódovaný operační kód se používá k povolení nebo zakázání specifických elektrických cest v CPU, které povedou ke správné činnosti.
Jakmile je instrukce dekódována, bude provedena. Přesné chování CPU bude záviset na operaci. Operace sčítání sečte dvě hodnoty dohromady. Operace skoku vypočítá, kam v programu skočit. Operace porovnání porovná dvě hodnoty. Operace NOP bude nečinná, protože NOP znamená No Operation.
Většina instrukcí pak vypíše výsledek operace. Tento výstup může jít do registrů procesoru a v případě potřeby do systémové RAM. Každá z těchto operací trvá jeden hodinový cyklus.
Nelegální operační kódy
Každá architektura CPU má svůj specifický seznam operačních kódů zveřejněný výrobcem. Hodnoty těchto operačních kódů nemusí být nutně stejné napříč platformami, a proto je třeba software kompilovat pro různé architektury. V některých případech výrobce zahrnuje také nezdokumentované operační kódy. Tyto kódy se označují jako „nelegální operační kódy“. Nelegální operační kódy, i když nejsou zdokumentovány, budou provádět stejnou funkci pokaždé, když jsou volány. Jako nedokumentované a nestandardní funkce je však aktualizace architektury CPU mohou jednoduše odstranit.
Některé rané počítačové hry na Apple II se spoléhaly na specifické nelegální operační kódy. Poté utrpěli problémy s výkonem a stabilitou v pozdější revizi procesoru Apple IIc, protože IIc odstranil nelegální operační kódy, které hry vyžadovaly. Nelegální operační kódy byly také používány v kruzích ochrany autorských práv jako bezpečnostní metoda prostřednictvím utajení v boji proti pirátům, kteří prolomili jejich obsah. Některé nelegální operační kódy jsou jednoduše míněny jako ladicí nástroje a obslužné programy chyb.
Instrukční sada x86 obsahuje velké množství nezdokumentovaných nelegálních operačních kódů. Je zajímavé, že některé z nich jsou sdíleny mezi procesory Intel a AMD, což naznačuje, že obě společnosti jsou si veřejně vědomy jejich účelu, i když nejsou zdokumentovány.
Kompilátory a montáž
Většina programů je napsána v jazycích vyšší úrovně. Jsou poměrně snadno čitelné, často používají anglická slova nebo těsnopis, aby se minimalizovaly křivky učení. Aby počítač mohl tyto programy spustit, musí být zkompilovány. Kompilátor je v podstatě překladač. Vezme kód vysoké úrovně a převede ho na počítačový kód, instrukce, kterým CPU rozumí.
V některých jazycích je také možné spouštět nekompilovaný kód prostřednictvím dříve zkompilovaného programu, který generuje strojový kód za běhu. Assembly je nízkoúrovňový programovací jazyk, který používá zkratku, která umožňuje vývojářům přímou viditelnost a kontrolu nad prováděnými operacemi. NOP je příklad montážní zkratky.
Závěr
Instrukční sada je seznam oficiálních funkcí, které může architektura CPU spustit. Je to seznam operací, které lze provést. Tyto operace jsou pevně zakódovány do CPU a volány pomocí příslušných operačních kódů.
Software obecně používá kompilátor k překladu z člověkem čitelného vysokoúrovňového kódu do strojového kódu, který může CPU číst. Někdy může mít architektura CPU nezdokumentované operační kódy, nazývané nelegální operační kódy. Nelegální operační kódy jsou technicky součástí instrukční sady. V budoucích iteracích platformy však nemusí být spolehlivě dostupné. Nezapomeňte zanechat své myšlenky v komentářích níže.