Svaki CPU dizajniran je od temelja da podržava određeni skup instrukcija. Skup instrukcija je skup tvrdo kodiranih operacija koje CPU može izvesti. Te operacije mogu biti, na primjer, zbrajanje dvaju brojeva, skok na drugi dio programa ili usporedba dviju vrijednosti. Svaka operacija koju računalo može izvesti jedinstveno je predstavljena operativnim kodom.
Operativni kodovi
Prilikom izvršavanja programa, CPU koristi programski brojač kako bi pratio koju instrukciju treba izvršiti sljedeću. Kada se instrukcija dohvati, programski brojač se povećava za duljinu instrukcije tako da pokazuje na početak sljedeće instrukcije. Svaka se instrukcija sastoji od operacijskog koda. Ovisno o instrukciji, može ili ne mora uključivati operande. Operandi mogu biti konstantna vrijednost ili pokazivač na lokaciju vrijednosti u CPU registru ili u RAM-u sustava.
Nakon što se dohvati potpuna instrukcija, potrebno ju je dekodirati. Ovo je proces u kojem CPU odvaja operacijski kod i sve operande. Dekodirani operativni kod se koristi za omogućavanje ili onemogućavanje određenih električnih putova u CPU-u koji će rezultirati ispravnim radom.
Nakon što je instrukcija dekodirana, bit će izvršena. Točno ponašanje CPU-a ovisit će o operaciji. Operacija zbrajanja će zbrojiti dvije vrijednosti. Operacija skoka izračunat će gdje u programu treba skočiti. Operacija usporedbe će usporediti dvije vrijednosti. NOP operacija će biti beskorisna, jer NOP označava No Operation.
Većina instrukcija tada će ispisati rezultat operacije. Ovaj izlaz može ići u registre procesora i, ako je potrebno, u RAM sustava. Za svaku od ovih operacija potreban je jedan takt.
Ilegalni operativni kodovi
Svaka CPU arhitektura ima svoj specifičan popis operativnih kodova koji je objavio proizvođač. Vrijednosti ovih operativnih kodova nisu nužno iste za više platformi, zbog čega softver treba kompajlirati za različite arhitekture. U nekim slučajevima proizvođač uključuje i nedokumentirane opkodove. Oni se nazivaju "ilegalni operativni kodovi". Ilegalni operativni kodovi, iako nedokumentirani, obavljat će istu funkciju svaki put kada se pozovu. Međutim, kao nedokumentirane i nestandardne značajke, ažuriranja CPU arhitekture mogu ih jednostavno ukloniti.
Neke rane računalne igre na Appleu II oslanjale su se na određene ilegalne opkodove. Zatim su imali problema s performansama i stabilnošću na kasnijoj reviziji CPU-a Apple IIc jer je IIc uklonio ilegalne opkodove koje su igre zahtijevale. Ilegalni operativni kodovi također su korišteni u krugovima za zaštitu autorskih prava kao sigurnosna metoda kroz opskurnost u njihovoj borbi protiv pirata koji provaljuju njihov sadržaj. Neki ilegalni operativni kodovi jednostavno su zamišljeni kao alati za otklanjanje pogrešaka i rukovatelji pogreškama.
Skup instrukcija x86 sadrži velik broj nedokumentiranih ilegalnih operativnih kodova. Zanimljivo je da neke od njih dijele Intel i AMD procesori, što ukazuje na to da su obje tvrtke javno svjesne njihove svrhe dok nisu dokumentirane.
Sastavljači i montaža
Većina programa je napisana na jezicima visoke razine. Oni su relativno laki za čitanje, često koriste engleske riječi ili stenografiju kako bi se minimizirale krivulje učenja. Da bi računalo izvršilo ove programe, oni moraju biti kompajlirani. Kompilator je u osnovi prevoditelj. Uzima kod visoke razine i pretvara ga u računalni kod, upute koje CPU može razumjeti.
Također je moguće, u nekim jezicima, pokrenuti neprevedeni kod kroz prethodno prevedeni program koji generira strojni kod u hodu. Asembler je programski jezik niske razine koji koristi stenografiju kako bi programerima omogućio izravnu vidljivost i kontrolu nad izvršenim operacijama. NOP je primjer stenografije sklopa.
Zaključak
Skup instrukcija je popis službenih funkcija koje CPU arhitektura može pokrenuti. To je popis operacija koje se mogu izvesti. Ove su operacije tvrdo kodirane u CPU i pozivaju se pomoću odgovarajućih operativnih kodova.
Softver općenito koristi kompajler za prevođenje iz koda visoke razine čitljivog za čovjeka u strojni kod koji CPU može čitati. Ponekad CPU arhitektura može imati nedokumentirane operacijske kodove, koji se nazivaju ilegalni operativni kodovi. Nezakoniti operativni kodovi tehnički su dio skupa instrukcija. Međutim, oni možda neće biti pouzdano dostupni u budućim iteracijama platforme. Ne zaboravite ostaviti svoje mišljenje u komentarima ispod.