Tavukoodi

Tavukoodi on välivaiheen koodi, jolle ohjelmointikielen kääntäjä voi kääntää ohjelman lähdekoodin kohdejärjestelmän konekielen sijaan. Joidenkin ohjelmointikielien ohjelmat käännetää tavukoodiksi joko käännöksen välivaiheena (välikielenä) tai virtuaalikoneella suoritusta varten. Tavukoodi on konekieltä muistuttavaa, mutta abstraktimpaa ja koneriippumatonta. Tavukoodille voidaan myös tehdä helpommin turvallisuustarkastus ennen suorittamista.lähde?

Tavukoodin kohde on yleensä abstrakti kone, joka ei ole minkään tietyn todellisen koneen kaltainen.

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

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 tavukoodiksi, jota ajaa Java-virtuaalikone.

.NET-alusta kääntää ohjelmat tavukoodiksi, jota Microsoft kutsuu välikieleksi (engl. Common Intermediate Language, CIL), jota suorittaa ajonaikainen ympäristö engl. Common Language Runtime, CLR).[1][2]

Tavukoodi voidaan kääntää konekielelle suorituksen aikana ajonaikaisella kääntämisellä (engl. just-in-time compilation, JIT). Käännöksen tulos on mahdollista tallentaa 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.

  1. What is "managed code"? docs.microsoft.com. 20.6.2016. Viitattu 29.2.2020. (englanniksi)
  2. Common Language Infrastructure (CLI) (PDF) ecma-international.org. Viitattu 29.2.2020. (englanniksi) 

Developed by StudentB