Každý CPU je od základov navrhnutý tak, aby podporoval konkrétnu inštrukčnú sadu. Inštrukčná sada je sada pevne zakódovaných operácií, ktoré môže CPU vykonávať. Týmito operáciami môže byť napríklad sčítanie dvoch čísel, skok do inej časti programu alebo porovnanie dvoch hodnôt. Každá operácia, ktorú môže počítač vykonať, je jednoznačne reprezentovaná operačným kódom.
Operačné kódy
Pri vykonávaní programu CPU používa programové počítadlo na sledovanie, ktorá inštrukcia sa musí vykonať ako ďalšia. Keď je inštrukcia vyzdvihnutá, programové počítadlo sa zvýši o dĺžku inštrukcie tak, aby ukazovalo na začiatok ďalšej inštrukcie. Každá inštrukcia pozostáva z operačného kódu. V závislosti od inštrukcie môže alebo nemusí obsahovať operandy. Operandy môžu byť konštantná hodnota alebo ukazovateľ na umiestnenie hodnoty v registri CPU alebo v systémovej RAM.
Po stiahnutí kompletnej inštrukcie je potrebné ju dekódovať. Toto je proces, pri ktorom CPU oddeľuje operačný kód a všetky operandy. Dekódovaný operačný kód sa používa na zapnutie alebo vypnutie špecifických elektrických ciest v CPU, ktoré povedú k správnej činnosti.
Keď je inštrukcia dekódovaná, bude vykonaná. Presné správanie CPU bude závisieť od operácie. Operácia sčítania spočíta dve hodnoty dohromady. Operácia skoku vypočíta, kam v programe skočiť. Operácia porovnania porovná dve hodnoty. Operácia NOP bude nečinná, pretože NOP znamená Žiadna operácia.
Väčšina inštrukcií potom vypíše výsledok operácie. Tento výstup môže ísť do registrov procesora a v prípade potreby do systémovej RAM. Každá z týchto operácií trvá jeden cyklus hodín.
Nelegálne operačné kódy
Každá architektúra CPU má svoj špecifický zoznam operačných kódov zverejnených výrobcom. Hodnoty týchto operačných kódov nie sú nevyhnutne rovnaké na rôznych platformách, a preto je potrebné softvér skompilovať pre rôzne architektúry. V niektorých prípadoch výrobca obsahuje aj nezdokumentované operačné kódy. Tieto sa označujú ako „nelegálne operačné kódy“. Nelegálne operačné kódy, aj keď nie sú zdokumentované, budú vykonávať rovnakú funkciu pri každom volaní. Ako nezdokumentované a neštandardné funkcie ich však môžu aktualizácie architektúry CPU jednoducho odstrániť.
Niektoré skoré počítačové hry na Apple II sa spoliehali na špecifické nelegálne operačné kódy. Potom utrpeli problémy s výkonom a stabilitou pri neskoršej revízii procesora Apple IIc, pretože IIc odstránil nelegálne operačné kódy, ktoré hry vyžadovali. Nelegálne operačné kódy sa tiež používali v kruhoch na ochranu autorských práv ako bezpečnostná metóda prostredníctvom utajenia v boji proti pirátom, ktorí prelomili ich obsah. Niektoré nelegálne operačné kódy sú jednoducho myslené ako nástroje na ladenie a obsluhu chýb.
Inštrukčná sada x86 obsahuje veľké množstvo nezdokumentovaných nelegálnych operačných kódov. Je zaujímavé, že niektoré z nich sú zdieľané medzi procesormi Intel a AMD, čo naznačuje, že obe spoločnosti sú si verejne vedomé ich účelu, hoci nie sú zdokumentované.
Kompilátory a zostava
Väčšina programov je napísaná v jazykoch vysokej úrovne. Sú relatívne ľahko čitateľné, často používajú anglické slová alebo skratky, aby sa minimalizovali krivky učenia. Aby počítač mohol vykonávať tieto programy, musia byť skompilované. Kompilátor je v podstate prekladač. Vezme kód na vysokej úrovni a prevedie ho na počítačový kód, inštrukcie, ktorým CPU rozumie.
V niektorých jazykoch je tiež možné spustiť nekompilovaný kód prostredníctvom predtým skompilovaného programu, ktorý generuje strojový kód za behu. Assembly je nízkoúrovňový programovací jazyk, ktorý používa skratku, ktorá umožňuje vývojárom priamu viditeľnosť a kontrolu nad vykonávanými operáciami. NOP je príkladom montážnej skratky.
Záver
Inštrukčná sada je zoznam oficiálnych funkcií, ktoré môže architektúra CPU spustiť. Je to zoznam operácií, ktoré je možné vykonať. Tieto operácie sú napevno zakódované do CPU a volané pomocou príslušných operačných kódov.
Softvér vo všeobecnosti používa kompilátor na preklad z ľudsky čitateľného kódu na vysokej úrovni do strojového kódu, ktorý dokáže CPU prečítať. Niekedy môže mať architektúra CPU nezdokumentované operačné kódy, nazývané nelegálne operačné kódy. Nelegálne operačné kódy sú technicky súčasťou inštrukčnej sady. V budúcich iteráciách platformy však nemusia byť spoľahlivo dostupné. Nezabudnite zanechať svoje myšlienky v komentároch nižšie.