close

Byte kód

Přejít na navigaci Přejít na hledání

Bytecode nebo přechodný kód [ 1 ] ​[ 2 ] ​[ 3 ]​ je abstraktnějším prostředním jazykem než strojový jazyk . Obvykle se s ním zachází jako s binárním souborem obsahujícím spustitelný program podobný objektovému modulu, což je binární soubor vytvořený kompilátorem , jehož obsahem je objektový kód nebo strojový kód.

Mezilehlý kód dostal své jméno, protože každý operační kód je obvykle jeden bajt dlouhý , ačkoli délka instrukčního kódu se liší. Každá instrukce má operační kód mezi 0 a 255 následovaný parametry, jako jsou registry nebo adresy paměti. Toto by byl popis typického případu, ačkoli specifikace bajtkódu závisí do značné míry na jazyce.

Jako přechodný kód je to forma výstupu používaná implementátory jazyka ke snížení závislosti na konkrétním hardwaru a ke snadnější interpretaci. Méně často se bajtový kód používá jako mezikód v kompilátoru. Některé systémy, nazývané dynamické překladače nebo kompilátory just-in-time, překládají bajtový kód do strojového kódu bezprostředně před spuštěním, aby se zvýšila rychlost provádění.

Bytecode programy jsou obvykle interpretovány interpretem bytecode ( obvykle nazývaným virtuální stroj , protože je analogický s počítačem). Jeho výhodou je jeho přenositelnost : stejný binární kód lze spustit na různých platformách a architekturách. Je to stejná výhoda, jakou mají tlumočené jazyky. Protože je však bajtkód obecně méně abstraktní, kompaktnější a více strojově orientovaný než program určený k lidské modifikaci, jeho výkon je často lepší než u interpretovaných jazyků. Kvůli tomuto zlepšení výkonu je mnoho interpretovaných jazyků ve skutečnosti zkompilováno do bajtkódu a poté spuštěno překladačem bajtového kódu . Mezi tyto jazyky patří Perl , Gambas , PHP a Python . V případě Javy se obvykle přenáší jako bajtový kód do přijímajícího stroje, který pomocí kompilátoru just-in-time zkompiluje bajtový kód do nativního strojového kódu před spuštěním, čímž šetří procesy interpretace.

Zajímavé jsou také takzvané p-kódy, podobné přechodným kódům, ale jejichž operační kódy se mohou skládat z více než jednoho bajtu a mohou mít proměnlivou velikost, jako operační kódy mnoha CPU. Tyto kódy fungují na velmi vysoké úrovni, včetně pokynů jako „vytiskni tento řetězec“ nebo „vyčisti obrazovku“. Například BASIC používá p-Code.

V listopadu 2019 vytvořily Mozilla, Fasty, Intel a Red Hat společnost Bytecode Alliance, která si klade za cíl podporovat používání jazyka WebAssembly v prostředí Linuxu a integrovat jakýkoli prohlížeč, jako je Safari, Chrome nebo Firefox. [ 4 ]

Příklady

>>>  import  dis  # "dis" - Python bytecode disassembler do mnemotechnických pomůcek. 
>>>  dis . dis ( 'print("Ahoj, světe!")' ) 
           1  0  LOAD_NAME      0  ( tisk ) 
             2  LOAD_CONST     0  ( 'Ahoj, světe!' ) 
             4  CALL_FUNCTION  1 
             6  RETURN_VALUE
  • ActionScript běží na ActionScript Virtual Machine (AVM), který je součástí Flash Player a AIR . Kód ActionScript je normálně převeden do formátu bajtkódu kompilátorem . Příklady kompilátorů zahrnují jeden vestavěný do Adobe Flash Professional a jeden zabudovaný do Adobe Flash Builder a dostupný v Adobe Flex SDK.
  • Objekty Adobe Flash
  • BANCStar, původně bytecode pro nástroj pro vytváření rozhraní, ale také používaný jako jazyk
  • Paketový filtr Berkeley
  • Bytecode inženýrská knihovna
  • Kompilátory virtuálních strojů C do Java
  • CLISP implementace Common Lisp slouží ke kompilaci pouze do bajtkódu po mnoho let; nyní však také podporuje kompilaci do nativního kódu pomocí GNU lightning
  • Implementace Common Lisp CMUCL a Scieneer Common Lisp lze kompilovat do nativního kódu i do bajtkódu, což je mnohem kompaktnější
  • Common Intermediate Language spouštěný modulem Common Language Runtime používaný jazyky .NET Framework , jako je C# .
  • Dalvik bytecode, navržený pro platformu Android , je spuštěn virtuálním strojem Dalvik
  • Dis bytecode, navržený pro Inferno (operační systém) , je spuštěn virtuálním strojem Dis
  • EiffelStudio pro programovací jazyk Eiffel
  • EM, virtuální stroj Amsterdam Compiler Kit používaný jako jazyk pro kompilaci i jako moderní jazyk bytecode
  • Emacs je textový editor, jehož většinu funkcí implementuje Emacs Lisp , jeho vestavěný dialekt Lisp. Tyto funkce jsou kompilovány do bajtkódu . Tato architektura umožňuje uživatelům přizpůsobit editor pomocí jazyka na vysoké úrovni, který po kompilaci do bajtkódu poskytuje přiměřený výkon.
  • Embeddable Common Lisp implementace Common Lisp lze zkompilovat do bajtkódu nebo C kódu
  • Ericsson implementace Erlang používá BEAM bytecodes
  • Programovací jazyky Icon a Unicon
  • Infocom použil Z-machine k tomu, aby byly jeho softwarové aplikace přenosnější
  • Java bytecode , který je spuštěn virtuálním strojem Java
    • ASM
    • BCEL
    • Javasista
    • JMangler
  • KEYB, ovladač klávesnice MS-DOS / PC DOS s jeho zdrojovým souborem KEYBOARD.SYS obsahujícím informace o rozložení a krátké sekvence p-kódu prováděné interpretem v rámci rezidentního ovladače.
  • LSL, skriptovací jazyk používaný ve virtuálních světech, se zkompiluje do bajtkódu , který je spuštěn ve virtuálním počítači. Second Life má původní Mono verzi, Inworldz vyvinul Phlox verzi.
  • Jazyk Lua používá virtuální stroj s bajtovým kódem založený na registru
  • m-kód jazyka MATLAB
  • víceplánový
  • O-kód programovacího jazyka BCPL
  • OCaml jazyka se volitelně zkompiluje do kompaktní formy bajtkódu
  • p-kód implementace UCSD Pascal jazyka Pascal
  • Virtuální stroj Parrot
  • Vyberte BASIC alias Data BASIC nebo MultiValue BASIC
  • Prostředí R pro statistické výpočty nabízí kompilátor bajtového kódu prostřednictvím balíčku kompilátoru, který je nyní standardem ve verzi R 2.13.0. Tuto verzi R je možné zkompilovat tak, aby ji využívaly základní a doporučené balíčky.
  • Adventura pyramida 2000
  • Schéma 48 Implementace schématu pomocí interpretu bytecode
  • Bytekódy mnoha implementací jazyka Smalltalk
  • Interpret rotace zabudovaný do mikrokontroléru Parallax Propeller
  • Databázový stroj SQLite překládá příkazy SQL do vlastního formátu bajtového kódu.
  • SLADKÝCH 16
  • tcl
  • Malý BASIC
  • Visual FoxPro se zkompiluje do bajtkódu
  • WebAssembly
  • YARV a Rubinius pro Ruby

Reference

  1. ^ Wolf, Gunnar (9. září 2015). Základy operačních systémů . Lulu.com. ISBN  978-607-02-6544-0 . Staženo 5. srpna 2022 . 
  2. Pérez, Juan Carlos Moreno. Objektově orientované programování . Vydavatelská skupina RA-MA . Staženo 5. srpna 2022 . 
  3. Zapien, Rosa Hernández de Lapién (2005). Terminologie Apex informatiky pro tlumočníky. Anglicko-španělský slovníček. . Rosie Zapien. ISBN  978-0-9772521-4-5 . Staženo 5. srpna 2022 . 
  4. "Mozilla, Fasty, Intel a Red Hat tvoří Alianci Bytecode." .