Bytekod

Den här artikeln behöver källhänvisningar för att kunna verifieras. (2020-12)
Åtgärda genom att lägga till pålitliga källor (gärna som fotnoter). Uppgifter utan källhänvisning kan ifrågasättas och tas bort utan att det behöver diskuteras på diskussionssidan.

Bytekod är ett namn för en slags kompilerad programkod. Till skillnad från maskinkod, som är knuten till en specifik dator, sägs bytekod vara abstrakt eller virtuell eftersom den oftast är obunden till en maskinarkitektur.

Namnet kommer av att instruktionskoderna, inklusive eventuella parametrar, representerades av en eller flera bytes, i ett sammanhang där CPU-instruktioner typiskt använde (ett eller flera) hela 16 eller 32-bitars ord för samma sak. Parameterarna är registernummer, minnesadresser, eller andra konstanter.

Normalt tolkas och exekveras bytekod av en bytekodtolk (ibland kallad virtuell maskin eftersom tolken implementerar en tänkt maskin vars maskinkod är bytekoderna). Fördelen med en tolk i programvara är portabilitet: för att köra ett bytekodprogram på en ny maskin krävs endast en bytekodtolk på den maskinen, saknas denna kan den relativt enkelt skrivas. Bytekod kan även översättas (kompileras) till maskinkod för bättre prestanda.

Bland programspråk som kompileras till olika former av bytekod kan nämnas (kronologiskt):

  • Vissa former av Pascal (till exempel UCSD-Pascal som använder P-kod maskin)
  • Vissa BASIC-varianter
  • Java
  • PHP
  • Perl
  • Tcl
  • Språk i .NET-familjen: C#, Visual Basic .NET, m.fl.

Forth använder sig av liknande kodstrategier för att uppnå portabilitet.