Mikä tahansa CPU on suunniteltu alusta alkaen tukemaan tiettyä käskysarjaa. Käskyjoukko on joukko kovakoodattuja toimintoja, joita CPU voi suorittaa. Näitä operaatioita voivat olla esimerkiksi kahden luvun lisääminen yhteen, hyppääminen ohjelman eri osaan tai kahden arvon vertailu. Jokainen toiminto, jonka tietokone voi suorittaa, esitetään yksilöllisesti opkoodilla.
Opcodes
Ohjelmaa suoritettaessa CPU käyttää ohjelmalaskuria seuratakseen, mikä käsky on suoritettava seuraavaksi. Kun käsky haetaan, ohjelmalaskuria kasvatetaan käskyn pituudella niin, että se osoittaa seuraavan käskyn alkuun. Jokainen käsky koostuu operaatiokoodista. Ohjeesta riippuen se voi sisältää tai ei sisällä operandeja. Operandit voivat olla vakioarvo tai osoitin arvon sijaintiin CPU-rekisterissä tai järjestelmän RAM-muistissa.
Kun täydellinen ohje on haettu, se on purettava. Tämä on prosessi, jossa CPU erottaa opkoodin ja kaikki operandit. Dekoodattua opkoodia käytetään ottamaan käyttöön tai poistamaan käytöstä tietyt sähköreitit CPU: ssa, jotka johtavat oikeaan toimintaan.
Kun käsky on purettu, se suoritetaan. CPU: n tarkka käyttäytyminen riippuu toiminnasta. Summaustoiminto summaa kaksi arvoa yhteen. Hyppytoiminto laskee, mihin ohjelmassa hypätään. Vertailutoiminto vertaa kahta arvoa. NOP-toiminto pysyy lepotilassa, koska NOP tarkoittaa No Operation.
Useimmat ohjeet tulostavat sitten toiminnon tuloksen. Tämä lähtö voi mennä prosessorin rekistereihin ja tarvittaessa järjestelmän RAM-muistiin. Jokainen näistä toiminnoista kestää yhden kellojakson.
Laittomat käyttökoodit
Jokaisella CPU-arkkitehtuurilla on oma valmistajan julkaisema luettelo opkoodeista. Näiden opkoodien arvot eivät välttämättä ole samoja eri alustojen välillä, minkä vuoksi ohjelmistot on käännettävä eri arkkitehtuureille. Joissakin tapauksissa valmistaja sisältää myös dokumentoimattomia käyttökoodeja. Näitä kutsutaan "laittomiksi käyttökoodeiksi". Vaikka laittomat käyttökoodit ovat dokumentoimattomia, ne suorittavat saman toiminnon joka kerta, kun niitä kutsutaan. Dokumentoimattomina ja epästandardeina ominaisuuksina CPU-arkkitehtuurin päivitykset voivat kuitenkin yksinkertaisesti poistaa ne.
Jotkut Apple II: n varhaiset tietokonepelit perustuivat tiettyihin laittomiin käyttökoodeihin. Sitten he kärsivät suorituskyky- ja vakausongelmista myöhemmässä Apple IIc -suorittimen versiossa, kun IIc poisti pelien vaatimat laittomat opkoodit. Laittomia käyttökoodeja käytettiin myös tekijänoikeussuojapiireissä turvamenetelmänä epäselvyyden vuoksi heidän taistelussaan sisältöään murtavia merirosvoja vastaan. Jotkut laittomat opkoodit on tarkoitettu vain virheenkorjaustyökaluiksi ja virhekäsittelijöiksi.
x86-käskysarja sisältää suuren määrän dokumentoimattomia laittomia opkoodeja. Mielenkiintoista on, että osa näistä on jaettu Intel- ja AMD-suorittimien kesken, mikä osoittaa, että molemmat yhtiöt ovat julkisesti tietoisia tarkoituksestaan, vaikka ne eivät ole dokumentoituja.
Kääntäjät ja kokoonpano
Suurin osa ohjelmista on kirjoitettu korkean tason kielillä. Nämä ovat suhteellisen helppolukuisia, ja niissä käytetään usein englanninkielisiä sanoja tai lyhenteitä oppimiskäyrien minimoimiseksi. Jotta tietokone voisi suorittaa nämä ohjelmat, ne on käännettävä. Kääntäjä on pohjimmiltaan kääntäjä. Se ottaa korkean tason koodin ja muuntaa sen tietokonekoodiksi, ohjeiksi, jotka prosessori voi ymmärtää.
Joillakin kielillä on myös mahdollista ajaa kääntämätöntä koodia aiemmin käännetyn ohjelman kautta, joka luo konekoodin lennossa. Assembly on matalan tason ohjelmointikieli, joka käyttää lyhennettä antaakseen kehittäjille mahdollisuuden nähdä suoritetut toiminnot suoraan ja hallita niitä. NOP on esimerkki kokoonpanon pikakirjoituksesta.
Johtopäätös
Käskysarja on luettelo virallisista toiminnoista, joita CPU-arkkitehtuuri voi suorittaa. Se on luettelo toiminnoista, jotka voidaan suorittaa. Nämä toiminnot koodataan CPU: hun ja kutsutaan niitä vastaavilla opkoodeilla.
Ohjelmisto käyttää yleensä kääntäjää kääntämään ihmisen luettavasta korkean tason koodista konekoodiksi, jonka CPU voi lukea. Joskus CPU-arkkitehtuurissa voi olla dokumentoimattomia toimintakoodeja, joita kutsutaan laittomiksi opkoodeiksi. Laittomat käyttökoodit ovat teknisesti osa ohjesarjaa. Ne eivät kuitenkaan välttämättä ole luotettavasti saatavilla tulevissa alustan iteraatioissa. Älä unohda jättää ajatuksiasi alla oleviin kommentteihin.