Kas yra instrukcijų rinkinys?

Bet kuris procesorius yra sukurtas nuo pat pradžių, kad palaikytų tam tikrą instrukcijų rinkinį. Instrukcijų rinkinys yra sunkiai užkoduotų operacijų, kurias gali atlikti CPU, rinkinys. Šios operacijos gali būti, pavyzdžiui, dviejų skaičių sudėjimas, perėjimas į kitą programos dalį arba dviejų reikšmių palyginimas. Kiekviena operacija, kurią gali atlikti kompiuteris, yra unikaliai vaizduojama opkodais.

Opcodes

Vykdydamas programą, CPU naudoja programos skaitiklį, kad sektų, kurią komandą reikia atlikti toliau. Kai gaunama instrukcija, programos skaitiklis padidinamas komandos ilgiu, kad jis nurodytų kitos komandos pradžią. Kiekviena instrukcija susideda iš operacijos kodo. Priklausomai nuo instrukcijos, joje gali būti operandų arba ne. Operandai gali būti pastovi reikšmė arba rodyklė į reikšmės vietą procesoriaus registre arba sistemos RAM.

Kai bus gauta visa instrukcija, ją reikia iššifruoti. Tai procesas, kurio metu centrinis procesorius atskiria opkodą ir visus operandus. Dekoduotas opkodas naudojamas norint įjungti arba išjungti konkrečius centrinio procesoriaus elektros kelius, kurie užtikrins tinkamą veikimą.

Kai instrukcija bus iššifruota, ji bus vykdoma. Tikslus procesoriaus elgesys priklausys nuo operacijos. Sudėjimo operacija susumuoja dvi reikšmes. Peršokimo operacija apskaičiuos, į kurią programos vietą reikia pereiti. Lyginimo operacija palygins dvi vertes. NOP operacija bus neaktyvi, nes NOP reiškia No Operation.

Tada dauguma instrukcijų išves operacijos rezultatą. Ši išvestis gali patekti į procesoriaus registrus ir, jei reikia, į sistemos RAM. Kiekvienai iš šių operacijų reikia vieno laikrodžio ciklo.

Neteisėti opkodai

Kiekviena procesoriaus architektūra turi specialų gamintojo paskelbtų operacijų kodų sąrašą. Šių operacijų kodų reikšmės nebūtinai yra tos pačios kelių platformų, todėl programinę įrangą reikia kompiliuoti skirtingoms architektūroms. Kai kuriais atvejais gamintojas taip pat įtraukia nedokumentuotus operacijų kodus. Tai vadinama „neteisėtais operacijų kodais“. Neteisėti operacijų kodai, nors ir nedokumentuoti, atliks tą pačią funkciją kiekvieną kartą, kai jie bus iškviesti. Tačiau kaip nedokumentuotas ir nestandartines funkcijas, procesoriaus architektūros atnaujinimai gali jas tiesiog pašalinti.

Kai kurie ankstyvieji „Apple II“ kompiuteriniai žaidimai rėmėsi konkrečiais neteisėtais kodais. Vėliau jie patyrė našumo ir stabilumo problemų dėl vėlesnės Apple IIc procesoriaus versijos, nes IIc pašalino nelegalius žaidimams reikalingus veiksmus. Neteisėti operacijų kodai taip pat buvo naudojami autorių teisių apsaugos sluoksniuose kaip saugumo metodas, nes jie buvo neaiškūs kovojant su piratais, nulaužiančiais jų turinį. Kai kurie neteisėti operacijų kodai yra tiesiog skirti kaip derinimo įrankiai ir klaidų tvarkyklės.

x86 instrukcijų rinkinyje yra daug nedokumentuotų nelegalių operacijų kodų. Įdomu tai, kad kai kuriuos iš jų dalijasi „Intel“ ir AMD procesoriai, o tai rodo, kad abi bendrovės viešai žino savo paskirtį, o ne dokumentuotos.

Kompiliatoriai ir asamblėja

Dauguma programų parašytos aukšto lygio kalbomis. Juos gana lengva perskaityti, dažnai naudojami angliški žodžiai arba trumpiniai, siekiant sumažinti mokymosi kreives. Kad kompiuteris galėtų vykdyti šias programas, jas reikia sukompiliuoti. Kompiliatorius iš esmės yra vertėjas. Jis paima aukšto lygio kodą ir paverčia jį kompiuterio kodu – instrukcijomis, kurias gali suprasti procesorius.

Taip pat kai kuriomis kalbomis galima paleisti nesukompiliuotą kodą naudojant anksčiau sukompiliuotą programą, kuri generuoja mašininį kodą. „Assembly“ yra žemo lygio programavimo kalba, kuri naudoja stenografiją, kad kūrėjai galėtų tiesiogiai matyti ir kontroliuoti atliekamas operacijas. NOP yra surinkimo stenografijos pavyzdys.

Išvada

Instrukcijų rinkinys yra oficialių funkcijų, kurias gali vykdyti procesoriaus architektūra, sąrašas. Tai yra operacijų, kurias galima atlikti, sąrašas. Šios operacijos yra užkoduotos CPU ir iškviečiamos naudojant atitinkamus operacijų kodus.

Paprastai programinė įranga naudoja kompiliatorių, kad iš žmonėms skaitomo aukšto lygio kodo išverstų į mašininį kodą, kurį gali nuskaityti CPU. Kartais procesoriaus architektūra gali turėti nelegalių operacijų kodų, vadinamų nelegaliais. Neteisėti operacijų kodai techniškai yra instrukcijų rinkinio dalis. Tačiau jie gali būti nepatikimai pasiekiami būsimose platformos iteracijose. Nepamirškite palikti savo minčių toliau pateiktuose komentaruose.