Ero sivun ”Konekieli” versioiden välillä

Wikipediasta
Siirry navigaatioon Siirry hakuun
[katsottu versio][katsottu versio]
Poistettu sisältö Lisätty sisältö
Ipr1 (keskustelu | muokkaukset)
Ei muokkausyhteenvetoa
Ipr1 (keskustelu | muokkaukset)
Ei muokkausyhteenvetoa
Rivi 1: Rivi 1:
[[File:W65C816S Machine Code Monitor.jpeg|thumb|Konekieltä [[W65C816S]] -mikroprosessorin tietokoneen näytössä]]
[[File:W65C816S Machine Code Monitor.jpeg|thumb|Konekieltä [[W65C816S]] -mikroprosessorin tietokoneen näytössä]]
'''Konekieli''' on [[tietokone]]en [[suoritin|suorittimen]] ymmärtämä [[formaali kieli]], joka koostuu sarjasta konekielisiä käskyjä (käskysarja tai käskykanta).<ref>{{Verkkoviite | osoite = http://www.cs.umsl.edu/~sanjiv/classes/cs312/lectures/instruct.pdf | nimeke = Machine Language Instructions | tiedostomuoto = PDF | viitattu = 10.7.2018}}</ref> Konekieli on sarja [[binääri]]siä [[bitti|bittejä]] eli ykkösiä ja nollia, joita tietokone tulkitsee käskyiksi ja operandeiksi.<ref>{{Verkkoviite | osoite = https://www.britannica.com/technology/machine-language | nimeke = Machine language | tekijä = David Hemmendinger | julkaisija = Encyclopaedia Britannica | viitattu = 10.7.2018}}</ref>
'''Konekieli''' on [[tietokone]]en [[suoritin|suorittimen]] ymmärtämä [[formaali kieli]], joka koostuu sarjasta konekielisiä käskyjä ('''käskysarja''' tai '''käskykanta''', {{k-en|Instruction set}}).<ref>{{Verkkoviite | osoite = http://www.cs.umsl.edu/~sanjiv/classes/cs312/lectures/instruct.pdf | nimeke = Machine Language Instructions | tiedostomuoto = PDF | viitattu = 10.7.2018}}</ref> Konekieli on sarja [[binääri]]siä [[bitti|bittejä]] eli ykkösiä ja nollia, joita tietokone tulkitsee käskyiksi ja operandeiksi.<ref>{{Verkkoviite | osoite = https://www.britannica.com/technology/machine-language | nimeke = Machine language | tekijä = David Hemmendinger | julkaisija = Encyclopaedia Britannica | viitattu = 10.7.2018}}</ref>


Kaikki, mitä tietokone lopulta tekee, muodostuu konekielisistä käskyistä. Konekieli, kuten kaikki mitä tietokone perimmiltään tekee, koostuu biteistä eli ykkösistä ja nollista. Konekieli on esitystapa tietokoneohjelmalle, joka on lähinnä bittitasoa.
Kaikki, mitä tietokone lopulta tekee, muodostuu konekielisistä käskyistä. Konekieli, kuten kaikki mitä tietokone perimmiltään tekee, koostuu biteistä eli ykkösistä ja nollista. Konekieli on esitystapa tietokoneohjelmalle, joka on lähinnä bittitasoa.

Versio 7. kesäkuuta 2019 kello 12.13

Konekieltä W65C816S -mikroprosessorin tietokoneen näytössä

Konekieli on tietokoneen suorittimen ymmärtämä formaali kieli, joka koostuu sarjasta konekielisiä käskyjä (käskysarja tai käskykanta, engl. Instruction set).[1] Konekieli on sarja binäärisiä bittejä eli ykkösiä ja nollia, joita tietokone tulkitsee käskyiksi ja operandeiksi.[2]

Kaikki, mitä tietokone lopulta tekee, muodostuu konekielisistä käskyistä. Konekieli, kuten kaikki mitä tietokone perimmiltään tekee, koostuu biteistä eli ykkösistä ja nollista. Konekieli on esitystapa tietokoneohjelmalle, joka on lähinnä bittitasoa.

Suorittimen käyttämä konekieli riippuu sen arkkitehtuurista, esimerkiksi x86-arkkitehtuurin suorittimella varustettu kone ajaa x86-konekieltä ja PowerPC-suorittimella PowerPC-konekieltä.

Symbolinen konekieli

Ensimmäiset tietokoneet 1940-luvulla ohjelmoitiin konekielellä. Myöhemmin kehitettiin ihmiselle havainnollisempia tapoja esittää konekieliset käskyt. Esimerkiksi symbolinen komento ADD voidaan tulkita konekieliseksi komennoksi 10110111. Syntyi symbolinen konekieli eli assembly. Havainnollisemmat ohjelmat oli sitten käännettävä erityisellä ohjelmalla, kääntäjällä, konekieliseksi koodiksi, joka voitiin syöttää tietokoneeseen sen ymmärtämässä muodossa, eli bitteinä.

Kullakin konekielellä on oma symbolinen vastineensa, esimerkiksi x86-arkkitehtuurin konekieltä vastaa x86-assembly.

Symbolisenkin konekielen käyttö on vaivalloista, joten yleensä ohjelmoinnissa käytetään korkean tason ohjelmointikieliä, esimerkiksi C:tä, joka käännetään konekieleksi tai tulkataan konekielisellä ohjelmalla. Korkean tason ohjelmointikielet mahdollistavat myös saman ohjelman käytön eri konekieltä käyttävissä tietokoneissa.

Konekieliset käskyt

Konekielinen käsky on bittikuvio, jolla on suorittimelle erityismerkitys. Suoritin hakee konekieliset käskyt yksi kerrallaan keskusmuistista ja toimii niiden ohjeiden perusteella. Konekielisen käskyn tulkinta riippuu suorittimen laitteistosta (elektroniikka) ja suorittimen sisäisestä ohjelmasta (mikrokoodi).

Konekielinen käsky koostuu kahdesta osasta:

  • operaatiokoodi (opcode) kertoo mitä tulee tehdä (esimerkiksi yhteenlasku)
  • osoitusmuoto, joka ilmoittaa, mille muistiosoitteille tai suorittimen sisäisille rekistereille operaatio tulee tehdä

Esimerkiksi konekielinen käsky 10110100 10110111 voi merkitä käskynä suorittimelle, että se laskee kahden sisäisen rekisterin sisällöt yhteen ja siirtää tuloksen kolmannen rekisterin osoittamaan muistipaikkaan. Symbolisella konekielellä käsky olisi esimerkiksi ADD A,B,@C

Lisäksi käskyissä voi olla etuliitteitä ja valinnaisia osia.[3]

Käskykantalaajennus

Käskykantalaajennuksella tarkoitetaan suorittimen konekielen lisätoimintoja, jotka ovat valinnaisia suorittimen toteutuksessa tai muutoin eivät kuulu osana normaalia käskykantaa.

Yleisiä esimerkkitapauksia ovat SIMD-tyyppiset laajennukset kuten SSE tyypillisten suorittimien käskykantaan.

Katso myös

Lähteet

  1. Machine Language Instructions (PDF) cs.umsl.edu. Viitattu 10.7.2018.
  2. David Hemmendinger: Machine language Encyclopaedia Britannica. Viitattu 10.7.2018.
  3. Encoding Real x86 Instructions c-jump.com. Viitattu 29.9.2017. (englanniksi)