Bytekód
V informatice je bytecode abstraktnějším přechodným jazykem mezi strojovým jazykem a programovacím jazykem , který se používá k popisu operací, které tvoří program . Nazývá se tak, protože operace mají často kód, který zabírá pouze jeden bajt , ačkoli délka celé instrukce se může lišit, protože každá operace má určitý počet parametrů, se kterými se má pracovat. Parametry těchto operací se mohou skládat z registrů nebo adres paměti , trochu jako strojový jazyk.
Popis
Zprostředkující jazyk, jako je bytecode, je velmi užitečný pro ty, kteří vytvářejí programovací jazyky , protože snižuje závislost na hardwaru a usnadňuje vytváření jazykových interpretů .
Bytekód lze také použít jako přechodnou reprezentaci programu , který má být zkompilován speciálním typem kompilátoru , nazývaného kompilátor just-in-time, který překládá bajtový kód do strojového jazyka bezprostředně před spuštěním samotného programu, aby se urychlilo jeho provádění. .exekuce.
Program bajtového kódu je vykonáván druhým programem, který interpretuje jeho instrukce. Tento tlumočník je často označován termínem virtuální stroj , protože jej může programátor vnímat jako abstraktní počítač , který interně vykonává většinu funkcí skutečného počítače. Tato abstrakce vám umožňuje psát přenosné programy , to znamená architekturované takovým způsobem, že je lze spouštět na různých typech operačních systémů a hardwarových architekturách . To je výhoda, kterou mají i interpretované jazyky , ale interpret bajtového kódu se ukazuje být mnohem rychlejší než interpret vysokoúrovňového programovacího jazyka, protože jde o jazyk s malým počtem jednoduchých instrukcí a blíže způsobu fungování hardware počítače ( procesor a paměť ).
První implementace zdrojového kódu do kompilátoru bajtového kódu , stejně jako interpret bajtového kódu, byl systém Smalltalk , vyvinutý v 70. letech ve výzkumném centru Xeroxu v Palo Alto .
Nejznámějším jazykem mezi těmi, které využívají bytecode, je Java . Java má jak virtuální stroj ( Java Virtual Machine ), který interpretuje kód bajtového kódu, tak kompilátor just-in-time, který překládá bajtový kód do strojového jazyka. Platforma .NET a tedy i jazyk C # má techniky podobné těm z jazyka Java. Jazyk Gambas využívá Bytecode.
Dnes, aby se zlepšila rychlost provádění, také mnoho dynamických jazyků, jako je PHP , Python , Ruby> 1.8 nebo Tcl , používá bajtový kód více či méně explicitně v závislosti na implementaci. Překládají program do bajtkódu a poté jej interpretují prostřednictvím virtuálního stroje. Jazyky Ruby 1.8 nebo Perl [1] na druhou stranu nepoužívají bajtkód, ale překládají kód do syntaktické stromové struktury, která velmi připomíná střední reprezentaci používanou v kompilátorech; tuto strukturu pak použije interpret ke spuštění programu.
Zvláštním typem bajtkódu jsou p-kódy , které mohou zabírat více než jeden bajt a mít instrukce různých velikostí, trochu jako operační kódy mnoha CPU . P-kódy pracují na mnohem vyšší úrovni abstrakce než bajtkódy, mohou mít například operace jako „vytisknout tento řetězec“ nebo „vymazat obrazovku“. Jazyk BASIC i některé verze Pascalu používají p-kódy.
Příklady
- Java bytecode , který je spuštěn Java Virtual Machine
- Společný zprostředkující jazyk platformy .NET, provozovaný společným jazykovým runtimem (CLR) , virtuálním strojem .NET
- CLISP , implementace Common Lisp , jejíž kompilátor vytváří pouze bytecode
- CMUCL , implementace Common Lisp , která dokáže produkovat bajtový i strojový kód
- Bytecode mnoha implementací programovacího jazyka Smalltalk
- Jazyk Ocaml , volitelně může kompilátor vytvořit velmi kompaktní formu bajtkódu
- Stroj s O-kódem programovacího jazyka BCPL
- Stroj UCSD Pascal p - code , konkrétní implementace jazyka Pascal
- Programovací jazyk ikon
Poznámky
- ^ Perl má pouze experimentální podporu před sestavením. Beattie, Malcolm a Enache Adrian, B :: Backend bytecode kompilátoru Bytecode Perl , na search.cpan.org , CPAN , 2003.
Související položky
Externí odkazy
- ( EN ) Popis bytecode Java na javaworld.com . Získáno 20. srpna 2005 (z originálu archivováno 6. srpna 2005) .
- ( EN ) Specifikace Java Virtual Machine na adrese java.sun.com .