Konekieli

Konekoodi on konekielellä kirjoitettu tietokoneohjelma. Se käyttää tietyn tietokonearkkitehtuurin käskykokonaisuutta. Se kirjoitetaan yleensä binäärimuodossa. Konekoodi on ohjelmiston alin taso. Muut ohjelmointikielet käännetään konekoodiksi, jotta tietokone voi suorittaa ne.

Ohje kertoo prosessille, mikä toiminto on suoritettava. Jokainen käsky koostuu opkoodista (operaatiokoodista) ja operandista (operandeista). Operandit ovat yleensä muistiosoitteita tai dataa. Käskyjoukko on luettelo tietokoneen käytettävissä olevista opkoodeista. Konekoodi on se, mihin assemblerikoodi ja muut ohjelmointikielet käännetään tai miksi ne tulkitaan.

Ohjelmanrakentajat muuttavat koodin toiseksi kieleksi tai konekoodiksi. Konekoodia kutsutaan joskus natiivikoodiksi. Tätä käytetään, kun puhutaan asioista, jotka toimivat vain joissakin tietokoneissa.

Konekoodin kirjoittaminen

Konekoodi voidaan kirjoittaa eri muodoissa:

  • Käyttämällä useita kytkimiä. Tämä tuottaa sarjan 1 ja 0. Tätä käytettiin tietojenkäsittelyn alkuaikoina. Sitä ei ole enää käytetty 1970-luvulta lähtien.
  • Hex-editorin käyttäminen. Tämä mahdollistaa opkoodien käytön komennon numeron sijasta.
  • Assemblerin käyttö. Assembler-kielet ovat yksinkertaisempia kuin op-koodit. Niiden syntaksi on helpompi ymmärtää kuin konekielen, mutta vaikeampi kuin korkean tason kielten. Assembler kääntää itse lähdekoodin konekoodiksi.
  • Korkean tason ohjelmointikielen käyttö mahdollistaa ohjelmat, joissa käytetään koodia, jota on helpompi lukea ja kirjoittaa. Nämä ohjelmat käännetään konekoodiksi. Kääntäminen voi tapahtua monessa vaiheessa. Java-ohjelmat optimoidaan ensin tavukoodiksi. Sitten se käännetään konekieleksi, kun sitä käytetään.
Varhaisen minitietokoneen etupaneeli, jossa on kytkimet konekoodin syöttämistä varten.Zoom
Varhaisen minitietokoneen etupaneeli, jossa on kytkimet konekoodin syöttämistä varten.

Konekoodin tyypilliset ohjeet

Ohjesarjassa on yleensä monenlaisia ohjeita:

  • Aritmeettiset operaatiot: Yhteenlasku, vähennyslasku, kertolasku, jakolasku.
  • Loogiset operaatiot: Konjunktio, disjunktio, negaatio.
  • Yksittäisiin bitteihin vaikuttavat operaatiot: Bittien siirtäminen vasemmalle tai oikealle.
  • Muistiin kohdistuvat operaatiot: arvon kopiointi rekisteristä toiseen.
  • Operaatiot, joilla verrataan kahta arvoa: suurempi kuin, pienempi kuin, yhtä suuri.
  • Operaatioita, jotka yhdistävät muita operaatioita: yhteenlasku, vertailu ja kopiointi, jos se on yhtä suuri kuin jokin arvo (yhtenä operaationa), hyppy johonkin kohtaan ohjelmassa, jos rekisteri on nolla.
  • Ohjelman kulkuun vaikuttavat operaatiot: hyppy johonkin osoitteeseen.
  • Operaatiot, joilla muunnetaan tietotyyppejä: esim. 32-bittisen kokonaisluvun muuntaminen 64-bittiseksi kokonaisluvuksi, liukulukuarvon muuntaminen kokonaisluvuksi (katkaisemalla).

Monet nykyaikaiset prosessorit käyttävät mikrokoodia joihinkin komentoihin. Monimutkaisemmat komennot käyttävät yleensä sitä. Näin tehdään usein CISC-arkkitehtuurien kanssa.

Ohjeet

Jokaisella prosessorilla tai prosessoriperheellä on oma käskykokonaisuutensa. Ohjeet ovat bittikuvioita, jotka vastaavat erilaisia käskyjä, jotka voidaan antaa koneelle. Näin ollen käskykanta on ominainen tietylle prosessoriluokalle, joka käyttää (useimmiten) samaa arkkitehtuuria.

Uudemmat prosessorimallit sisältävät usein kaikki edeltäjänsä käskyt ja saattavat lisätä uusia käskyjä. Joskus uudemmassa suunnittelussa jokin käskykoodi poistuu tai sen merkitys muuttuu (yleensä siksi, että sitä tarvitaan uusiin tarkoituksiin), mikä vaikuttaa koodin yhteensopivuuteen; jopa lähes täysin yhteensopivissa prosessoreissa joidenkin käskyjen käyttäytyminen voi olla hieman erilaista, mutta tämä on harvoin ongelma.

Järjestelmät voivat poiketa toisistaan myös muiden yksityiskohtien, kuten muistin sijoittelun, käyttöjärjestelmien tai oheislaitteiden osalta. Koska ohjelma yleensä perustuu tällaisiin tekijöihin, eri järjestelmät eivät yleensä suorita samaa konekoodia, vaikka käytettäisiin samantyyppistä prosessoria.

Useimmissa ohjeissa on yksi tai useampi opcode-kenttä. Niissä määritetään käskyn perustyyppi. Muut kentät voivat ilmoittaa operandien tyypin, osoitustavan ja niin edelleen. Lisäksi voi olla erikoisohjeita, jotka sisältyvät itse op-koodiin. Näitä käskyjä kutsutaan välittömiksi käskyiksi.

Prosessorisuunnittelussa voi olla muitakin eroja. Eri ohjeiden pituudet voivat olla erilaisia. Niillä voi myös olla sama pituus. Jos kaikilla ohjeilla on sama pituus, se voi yksinkertaistaa suunnittelua.

Esimerkki

MIPS-arkkitehtuurissa on 32 bitin pituisia käskyjä. Tässä osassa on esimerkkejä koodista. Käskyn yleinen tyyppi on op (operation) -kentässä. Se on ylimmät 6 bittiä. J-tyyppiset (hyppy) ja I-tyyppiset (välitön) ohjeet annetaan kokonaan op-kentässä. R-tyyppiset (rekisteri) ohjeet sisältävät kentän funct. Se määrittää koodin tarkan toiminnon. Näissä tyypeissä käytetyt kentät ovat:

      6 5 5 5 5 5 5 6 bittiä [ op | rs | rt | rd |shamt| funct] R-tyyppi [ op | rs | rt | osoite/välitön] I-tyyppi [ op | kohdeosoite ] J-tyyppi J-tyyppi

rs, rt ja rd ilmaisevat rekisterin operandit. shamt ilmoittaa siirtomäärän. Osoite- tai välittömät kentät sisältävät suoraan operandin.

Esimerkki: Lisää rekisterit 1 ja 2. Sijoita tulos rekisteriin 6. Se on koodattu:

[ op | rs | rt | rd |shamt| funct] 0 1 2 6 0 0 32 desimaaliluku 000000 00001 00010 00110 00000 100000 binääriluku

Lataa arvo rekisteriin 8. Ota se muistisolusta 68 solua rekisterissä 3 mainitun paikan jälkeen:

[ op | rs | rt | address/immediate] 35 3 8 68 desimaaliluku 100011 00011 01000 00000 00001 000100 binary

Siirry osoitteeseen 1024:

[ op | kohdeosoite ] 2 1024 desimaaliluku 000010 00000 00000 00000 00000 10000 000000 binääriluku

Aiheeseen liittyvät sivut

  • Binäärilukujärjestelmä
  • Kvanttitietokoneet
  • Käskysarja
  • Vähennetty käskykantainen tietokone

Kysymyksiä ja vastauksia

K: Mitä on konekoodi?


V: Konekoodi on konekielellä kirjoitettu tietokoneohjelma, joka käyttää tietyn tietokonearkkitehtuurin käskykokonaisuutta, ja se kirjoitetaan yleensä binäärimuodossa.

K: Mikä on ohjelmiston alin taso?


V: Konekoodi on ohjelmiston alin taso.

K: Miten muut ohjelmointikielet suoritetaan tietokoneilla?


V: Muut ohjelmointikielet käännetään konekoodiksi, jota tietokone voi suorittaa.

K: Mistä konekoodin käsky koostuu?


V: Konekoodin käsky koostuu opkoodista (operaatiokoodista) ja operandista (operandeista). Operandit ovat yleensä muistiosoitteita tai dataa.

K: Mikä on käskykokonaisuus?


V: Käskykokonaisuus on luettelo tietokoneen käytettävissä olevista operaatiokoodeista.

K: Mitä ohjelmanrakentajat tekevät koodilla?


V: Ohjelmanrakentajat muuttavat koodin toiseksi kieleksi tai konekoodiksi.

K: Mikä on konekoodin toinen nimi?


V: Konekoodia kutsutaan joskus natiivikoodiksi, kun puhutaan asioista, jotka toimivat vain joissakin tietokoneissa.

AlegsaOnline.com - 2020 / 2023 - License CC3