Mis on juhiste komplekt?

click fraud protection

Iga protsessor on algusest peale loodud konkreetse käsukomplekti toetamiseks. Käskude komplekt on kõvakodeeritud toimingute kogum, mida CPU saab teha. Need toimingud võivad olla näiteks kahe numbri liitmine, programmi erinevasse ossa hüppamine või kahe väärtuse võrdlemine. Iga toimingut, mida arvuti saab teha, esitab kordumatult opkood.

Opkoodid

Programmi täitmisel kasutab CPU programmiloendurit, et jälgida, millist käsku tuleb järgmisena täita. Käsu toomisel suurendatakse programmiloendurit käsu pikkuse võrra, nii et see osutab järgmise käsu algusesse. Iga käsk koosneb opkoodist. Olenevalt juhisest võib see sisaldada operande või mitte. Operandid võivad olla konstantsed väärtused või osuti väärtuse asukohale CPU registris või süsteemi RAM-is.

Kui kogu juhis on laaditud, tuleb see dekodeerida. See on protsess, mille käigus CPU eraldab opkoodi ja kõik operandid. Dekodeeritud opkoodi kasutatakse CPU teatud elektriradade lubamiseks või keelamiseks, mis tagavad õige töö.

Kui käsk on dekodeeritud, siis see täidetakse. Protsessori täpne käitumine sõltub toimingust. Liitmise toiming liidab kaks väärtust kokku. Hüppeoperatsioon arvutab, kuhu programmis hüpata. Võrdlusoperatsioon võrdleb kahte väärtust. NOP-operatsioon jääb jõude, kuna NOP tähendab No Operation.

Enamik juhiseid väljastab seejärel toimingu tulemuse. See väljund võib minna protsessori registritesse ja vajadusel süsteemi RAM-i. Kõigi nende toimingute tegemiseks kulub üks kellatsükkel.

Illegaalsed opkoodid

Igal CPU arhitektuuril on oma spetsiifiline tootja avaldatud opkoodide loend. Nende opkoodide väärtused ei pruugi olla samad platvormidevahelised, mistõttu tuleb tarkvara erinevate arhitektuuride jaoks kompileerida. Mõnel juhul lisab tootja ka dokumenteerimata opkoode. Neid nimetatakse "illegaalseteks opkoodideks". Ebaseaduslikud opkoodid, kuigi need pole dokumenteeritud, täidavad sama funktsiooni iga kord, kui neile helistatakse. Dokumentideta ja mittestandardsete funktsioonidena võivad protsessori arhitektuuri värskendused need aga lihtsalt eemaldada.

Mõned Apple II varased arvutimängud põhinesid konkreetsetel ebaseaduslikel opkoodidel. Seejärel tekkis neil hilisemas Apple IIc protsessori versioonis jõudluse ja stabiilsusega probleeme, kuna IIc eemaldas mängude jaoks vajalikud ebaseaduslikud opkoodid. Ebaseaduslikke opkoode kasutati ka autoriõiguste kaitse ringkondades turvameetodina, mis on ebaselge nende sisu murdmise vastu võitlemisel. Mõned ebaseaduslikud opkoodid on mõeldud lihtsalt silumistööriistade ja veakäsitlejatena.

Käsukomplekt x86 sisaldab suurt hulka dokumenteerimata ebaseaduslikke opkoode. Huvitav on see, et mõnda neist jagavad Inteli ja AMD protsessorid, mis näitab, et mõlemad ettevõtted on oma eesmärgist avalikult teadlikud, kuigi neil pole dokumente.

Koostajad ja assamblee

Enamik programme on kirjutatud kõrgetasemelistes keeltes. Neid on suhteliselt lihtne lugeda, kasutades õppimiskõverate minimeerimiseks sageli ingliskeelseid sõnu või stenogramme. Et arvuti neid programme käivitaks, tuleb need kompileerida. Kompilaator on põhimõtteliselt tõlkija. See võtab kõrgetasemelise koodi ja teisendab selle arvutikoodiks, juhisteks, millest protsessor aru saab.

Mõnes keeles on võimalik ka kompileerimata koodi käivitamine eelnevalt kompileeritud programmi kaudu, mis genereerib käigupealt masinkoodi. Assembly on madala tasemega programmeerimiskeel, mis kasutab stenogrammi, et võimaldada arendajatel teostatavate toimingute otsest nähtavust ja kontrolli. NOP on montaaži stenogrammi näide.

Järeldus

Käskude komplekt on ametlike funktsioonide loend, mida CPU arhitektuur saab käivitada. See on loend toimingutest, mida saab teha. Need toimingud kodeeritakse CPU-sse ja kutsutakse välja vastavate opkoodide abil.

Tarkvara kasutab tavaliselt kompilaatorit, et tõlkida inimesele loetavast kõrgetasemelisest koodist masinkoodiks, mida CPU saab lugeda. Mõnikord võib protsessori arhitektuuril olla dokumenteerimata opkoode, mida nimetatakse ebaseaduslikeks opkoodideks. Ebaseaduslikud opkoodid on tehniliselt osa juhistest. Siiski ei pruugi need tulevaste platvormi iteratsioonide puhul usaldusväärselt saadaval olla. Ärge unustage jätta oma mõtteid allolevatesse kommentaaridesse.