keskiviikko 30. marraskuuta 2016

Tietokone, osa 5: Konekieli

Nyt on aika pistää edellisellä kerralla esitelty prosessori tekemään hyödyllistä työtä. Prosessori suorittaa yksinkertaisia käskyjä, jotka on esitetty "konekielellä" — ne on niin ikään esitetty lukuina, joille on annettu tietty merkitys.

Konekieliohjelmointia tehdään nykyään erittäin vähän, koska se on monimutkaista ja vaatii syvällistä ymmärrystä koneen toiminnasta. On paljon järkevämpää käyttää työkaluja, jotka ovat luettavampia ihmiselle ja jotka tuottavat parempaa konekieltä kuin tavalliset kuolevaiset. Konekieli on varattu käyttöjärjestelmien ja ohjelmointikielten kehittäjille — sekä meille, jotka syvennymme prosessorin toimintaan.

Aletaan laskea!

Kuten viime kerralla nähtiin, prosessorin "suttupaperille" mahtuu muutama luku. Kutsutaan näitä rekistereitä nimillä R1 ja ylöspäin. Esitetään jokainen konekielen käsky nimellä, joka on esimerkiksi muotoa LISÄÄ (käytän isoja kirjaimia erottamisen vuoksi; yleensä nimet ovat englanninkielisiä ja lyhenteitä).

Nyt vaikkapa käsky, joka lisää rekisterien 1 ja 2 arvot toisiinsa ja tallentaa tuloksen rekisteriin 3, voisi näyttää tältä:

LISÄÄ R1, R2 -> R3

IKEA-ohje steroideilla

Otetaan esimerkiksi vähän isompi ohjelma. Luvun itseisarvo, eli luvun etäisyys nollasta, saadaan seuraavalla säännöllä:

\[ f(x) = \begin{cases} x & ,x \geq 0\\ -x & ,x < 0 \end{cases} \]

Tämä voitaisiin kääntää konekielellä seuraavan näköiseksi sarjaksi, joka olettaa luvun olevan rekisterissä 1:

1. VERTAA R1 >= 0
2. JOS TOSI SIIRRY VAIHEESEEN 4
3. VÄHENNÄ 0, R1 -> R1
4. VALMIS

Ensimmäisessä käskyssä tutkitaan, kumpi tapaus on kyseessä. Jos ollaan ylemmässä tapauksessa, ei tarvitse tehdä mitään, ja siirrytään loppuun. Jos puolestaan vastaluku täytyy laskea, vaiheessa 3 lasketaan $(0 - x) = -x$ ja kirjoitetaan se alkuperäisen luvun tilalle.

Ensi kerralla käännämme tämän ohjelman ihmisystävällisemmälle kielelle. Perjantaihin!


Kokeiltavaksi ja pohdittavaksi

  • Laajenna edelliset esimerkit ohjelmaksi, joka laskee itseisarvon rekisterien 1 ja 2 summasta.
  • Tutustu tähän kertolaskumenetelmään. Vaikka tarina vihjaa tuoreempaan taustaan, samantyylistä laskutapaa käytettiin muuten jo muinaisessa Egyptissä!
  • Kirjoita edellinen menetelmä sarjana yksinkertaisia käskyjä.

Ei kommentteja:

Lähetä kommentti

Kommentit ovat moderoituja — yritän hyväksyä kommenttisi mahdollisimman pian. Voit kirjoittaa kommenttiin LaTeX-koodia tai yksinkertaista HTML-merkintää: lue lisää Kommentointi-sivulta.