Opcode
Op-koodi määrittää, mikä tietokoneen perusoperaatio käskykokonaisuudessa on suoritettava. Sitä käytetään kirjoitettaessa konekoodia. Se käskee tietokonetta tekemään jotakin. Jokaisessa konekielisessä käskyssä on yleensä sekä op-koodi että operandit. Opkoodi on kuin lauseen verbi, ja operandit ovat kuin lauseen subjekti. Operandit ovat tyypillisesti muisti- tai rekisteriosoitteita.
Operaatiokoodeja käytetään konekoodissa useisiin toimintoihin, kuten rekistereiden Float-laskentaan, rekisterien yhteenlaskuun, rekisterien arvojen siirtämiseen muistiin tai kiintolevylle, ohjelman pysäyttämiseen jne. Nykyaikaisissa tietokoneissa käytetään kirjaimellisesti satoja yleisiä opkoodeja.
Tietokoneen arkkitehtuurin luonteen vuoksi op-koodit ovat binäärilukuja. Vaihtoehtoisesti op-koodit voidaan esittää heksadesimaalilukuina (esimerkiksi 10100101 = A5), mikä helpottaa lukemista ja koodaamista konekoodiohjelmaa suunniteltaessa tai emuloitaessa. Nämä arvot muutetaan sitten tallennettaviksi binääriarvoiksi. Nykyaikaiset op-koodit ovat vähintään kahden heksamerkin pituisia, ja ne vievät yhden tavun tallennustilaa.
Opkoodien kyky ja "arvo" vaihtelevat sen mukaan, mihin tietokoneeseen ne kuuluvat, koska ne ovat laitteistoriippuvaisia. Esimerkiksi STORE-operaatiokoodi Hex-koodina ilmaistuna voi olla FA yhdessä koneessa ja 02 toisessa koneessa. Jotkin opkoodit eivät ole käytettävissä joissakin tietokoneissa. Yleisesti ottaen käskykokonaisuuksia voidaan rakentaa kahdella tavalla. RISC-tietokoneissa (Reduced Instruction Set Computer) on vähemmän mahdollisia op-koodeja, jotta yksinkertaisten prosessien nopeus kasvaisi. Monimutkainen käskykokonaisuus (CISC) tarjoaa enemmän op-koodeja nopeuden lisäämiseksi monimutkaisissa prosesseissa.
Ohjelmoijat käyttävät op-koodeja harvoin suoraan. Aina kun ne ohjelmoidaan suoraan muistiin, niiden toiminta taataan vain siinä tietokoneessa, jota varten ne on suunniteltu. Kun ohjelmoijat kirjoittavat assembler-kielellä, kääntäjäohjelma muuntaa ohjelmalausekkeet yksi kerrallaan konekielisiksi komennoiksi. Ohjelmoijan on vain muistettava jokaisen op-koodin binääriarvon sijasta sen muistinimi. Vaihtoehtoisesti voidaan käyttää korkean tason ohjelmointikieltä, esimerkiksi 4. sukupolvea, joka muunnetaan 3. sukupolveksi ja niin edelleen, kunnes päästään 1. sukupolveen. Tästä eteenpäin yksittäinen tietokone muuntaa ohjelman konekoodiksi aina, kun ohjelmatiedosto luetaan. Näin ohjelma voi toimia paljon useammassa eri tietokoneessa.
Kysymyksiä ja vastauksia
K: Mikä on opkoodi?
V: Op-koodi on binääriluku, joka määrittää, mikä tietokoneen perusoperaatio käskykannasta on suoritettava. Sitä käytetään kirjoitettaessa konekoodia, ja se kertoo tietokoneelle, mitä tehdä.
K: Mitä ovat operandit?
V: Operandit ovat tyypillisesti muisti- tai rekisteriosoitteita, jotka liittyvät konekielisen käskyn op-koodiin. Niitä voidaan pitää lauseen subjektina, kun taas op-koodi toimii kuin verbi.
K: Kuinka monta yleistä opkoodia käytetään nykyaikaisissa tietokoneissa?
V: Nykyaikaisissa tietokoneissa käytetään satoja yleisiä opkoodeja.
K: Miten opkoodit esitetään?
V: Opkoodit voidaan esittää joko binäärilukuina tai heksadesimaalilukuina, mikä helpottaa lukemista ja koodaamista konekoodiohjelmaa suunniteltaessa tai emuloitaessa.
K: Kuinka pitkiä nykyaikaiset opkoodit ovat?
V: Nykyaikaiset op-koodit ovat vähintään kahden heksamerkin pituisia ja vievät 1 tavun tallennustilaa.
K: Mitä ovat RISC ja CISC?
V: Reduced Instruction Set Computing (RISC) tarjoaa vähemmän mahdollisia op-koodeja yksinkertaisten prosessien nopeuden lisäämiseksi, kun taas Complex Instruction Set Computing (CISC) tarjoaa enemmän op-koodeja monimutkaisten prosessien nopeuden lisäämiseksi.
K: Miten ohjelmoijat yleensä käyttävät opkoodeja?
V: Ohjelmoijat käyttävät harvoin suoraa ohjelmointia muistiin yksittäisen tietokoneen erityisellä käskykokonaisuudella; sen sijaan he kirjoittavat ohjelmia käyttämällä assembler-kieliä tai korkean tason ohjelmointikieliä, jotka muunnetaan konekoodiksi aina, kun ohjelmatiedosto luetaan, jotta se voi toimia useissa eri tietokonetyypeissä.