Tavukoodi

Wikipedia
Loikkaa: valikkoon, hakuun

Tavukoodi on koodi, jolle joissakin ohjelmointikielissä tietokoneohjelman lähdekoodi on tapana kääntää joko käännöksen välivaiheena tai tavukooditulkilla suoritusta varten. Tavukoodi on konekoodia muistuttavaa, mutta abstraktimpaa, tiiviimpää ja koneriippumatonta. Tavukoodille voidaan myös tehdä helpommin turvallisuustarkastus ennen suorittamista.

Tavukoodissa yleensä operaatiokoodi on yhden tavun mittainen, mutta käskyn kokonaispituus voi vaihdella.

Tavukoodia voi käyttää välikoodina ohjelmointikielen kääntäjää toteutettaessa, jolloin riippuvuutta tietystä laitteistototeutuksesta saadaan vähennettyä.

Tavukoodiksi käännettyjä ohjelmia ajetaan tavukooditulkilla, jota kutsutaan usein virtuaalikoneeksi, koska se muistuttaa käyttäytymiseltään tietokonetta. Etuna on siirrettävyys, samaa tavukoodia voidaan ajaa monilla eri laitteistoilla. Sama etu on tulkattavilla komentosarjakielillä, mutta tavukoodi on yleensä vähemmän abstraktia, pienempää ja laitteistoläheisempää kuin komentosarjat. Tämä johtaa parempaan suoritusnopeuteen.

Java-kieli käännetään aina tavukoodiksi, ja syntyvää koodia ajaa Java-virtuaalikone. .NET-arkkitehtuuri kääntää ohjelmat aluksi matalan tason CIL-kieleksi (Common Intermediate Language), joka kääntyy tavukoodiksi. Syntynyttä tavukoodia suorittaa CLR (Common Language Runtime).

Tavukoodi on mahdollista kääntää suorituksen aikana konekoodiksi. Tekniikkaa nimitetään nimellä JIT (just-in-time compilation). Käännöksen tulos on mahdollista tallettaa seuraavia käyttökertoja varten.

Myös monet komentosarjakielet, mukaan lukien Perl, PHP ja Python käännetään aluksi tavukoodiksi, jota tavukooditulkki ajaa. Käännös tapahtuu täysin huomaamatta ohjelmaa käynnistettäessä. Käännetty tavukoodi voidaan myös tallentaa kiintolevylle uutta suorituskertaa varten.

Historiaa[muokkaa | muokkaa wikitekstiä]

Tavukoodi tarkoitti alun perin esimerkiksi BASIC-tulkissa ohjelman tiivistettyä tallennusmuotoa, jossa käskysanat korvattiin yksinkertaisesti numerolla (esimerkiksi "PRINT" → #05). Koska käskysanoja yleensä oli alle 256, yksi tavu riitti korvaamaan käskysanan. Tästä tuli nimitys tavukoodi. Usein näissä tallennusmuodoissa myös numerot korvattiin sisäisellä esitysmuodolla ja merkkijonot tallennettiin vain kerran. Tämä tavukoodi ei muuttanut ohjelman rakennetta mitenkään ja alkuperäinen esitysmuoto (mahdollisesti numeroiden tarkkaa esitysmuotoa lukuun ottamatta) oli palautettavissa täydellisesti tavukoodista.

Ensimmäinen yleisessä käytössä oleva virtuaaliselle pinotietokoneelle käännettävä välikieli oli USCD Pascal -järjestelmän p-koodi. Pitkään kaikki pinon käyttöön perustuvat välikieliratkaisut tunnettiin nimellä p-koodi vaikkei ne olleetkaan samanlaisia kuin alkuperäinen p-koodi.

Aikojen kuluessa (mahdollisesti ensiksi Java-ohjelmointikielessä) p-koodin tyyppistä välikieltä on alettu kutsua yksinkertaisesti tavukoodiksi ja tämä on korvannut vanhentuneen aiemman tavukoodin määritelmän.

Katso myös[muokkaa | muokkaa wikitekstiä]

Aiheesta muualla[muokkaa | muokkaa wikitekstiä]