Bajtkód

Bajtkód neboli byte code [bait kəud] (p-code [ˈpiː ˌkəud], anglicky portable code [ˈpoːtəbl kəud], „přenositelný kód“) je v informatice označení pro různé formy instrukčních sad navržených pro realizaci snadno přenositelných aplikací a jejich efektivní běh na libovolné platformě. Zřejmě nejznámějším programovacím jazykem využívajícím bajtkód je Java. Na cílovém počítači je nutné nainstalovat běhové prostředí, které zajistí prostředí pro spuštění bajtkódu.

Charakteristika

Název bajtkód pochází z instrukčních sad, které mají vyhrazený jeden byte pro instrukci následovaný volitelnými parametry. Co se týče čitelnosti a úrovně abstrakce kódu, je bajtkód na hranici mezi kódem vyššího programovacího jazyka a strojovým kódem. Jeho cílem je usnadnit interpretaci kódu interpretem nebo snížit závislost na hardware a operačním systému. Díky tomu může stejný kód běžet na různých platformách často pomocí virtuálních strojů, nebo může být před spuštěním zkompilován do strojového kódu cílové platformy, což umožní rychlejší běh kódu.

Na rozdíl od čitelných[ujasnit] kódů je bajtkód kompaktní číselný kód konstant, odkazů (číselné adresy) a operačních kódů instrukcí a jako takový kóduje výsledek parsování a sémantické analýzy. Díky tomu je jeho interpretace rychlejší než přímá interpretace původního zdrojového kódu. Různé části kódu se mohou nacházet v různých souborech, které jsou dynamicky načítány za běhu.

Běh kódu

Interpret bajtkód nejprve parsuje, čímž získá instrukce, které následně sám jednu po druhé vykonává. Tento způsob zajišťuje přenositelnost interpretu. Další možností jsou dynamické překladače nebo Just-in-time kompilátory (JIT), které přeloží bajtkód do strojového kódu, který je následně proveden přímo procesorem. Běh takové aplikace je pak velmi rychlý, ale ztrácí se přenositelnost virtuálního stroje (ne však bajtkódu). Příkladem je jazyk Java, kde kód programu je typicky uložen v bajtkódu. Při spuštění programu na virtuálním stroji je bajtkód přeložen do strojového kódu a následně vykonán. Dojde sice k prodlevě při spouštění aplikace, ale zato zvýšení výkonu za běhu programu.

Díky vyššímu výkonu tohoto přístupu je často i kód skriptovacích jazyků prováděn ve dvou krocích. V prvním kroku je kód programu přeložen do bajtkódu a předán virtuálnímu stroji. V druhém kroku virtuální stroj přeloží bajtkód do strojového kódu a spustí program. Tohoto přístupu využívají jazyky Java, Python, PHP a další.

Javovský bajtkód

Bajtkód jazyku Java vyžívá prefixové/suffixové konvence v názvu instrukcí pro označení datového typu parametrů (např. i: integer). Instrukce lze rozdělit do několika skupin podle využití:

  • Načtení a uložení (aload_0, istore, …)
  • Aritmetické a logické (ladd, fcmpl, …)
  • Konverze datových typů (i2b, d2i, …)
  • Vytváření objektů a manipulace (new, putfield, …)
  • Management zásobníku (swap, dup2, …)
  • Přesuny v kódu (ifeq, goto, …)
  • Volání metod a návraty (invokespecial, areturn, …)

Ukázka bajtkódu

outer:
for (int i = 2; i < 1000; i++) {
    for (int j = 2; j < i; j++) {
        if (i % j == 0) continue outer;
    }
    System.out.println(i);
}

Kompilátor jazyku Java by mohl výše uvedený kód přeložit do bajtkódu následovně:

0: iconst_2
1: istore_1
2: iload_1
3: sipush 1000
6: if_icmpge 44
9: iconst_2
10: istore_2
11: iload_2
12: iload_1
13: if_icmpge 31
16: iload_1
17: iload_2
18: irem
19: ifne 25
22: goto 38
25: iinc 2, 1
28: goto 11
31: getstatic #84; //Pole java/lang/System.out:Ljava/io/PrintStream;
34: iload_1
35: invokevirtual #85; //Metoda java/io/PrintStream.println:(I)V
38: iinc 1, 1
41: goto 2
44: return

Příklady

Externí odkazy

  • Slovníkové heslo bajtkód ve Wikislovníku

Zdroj datcs.wikipedia.org
Originálcs.wikipedia.org/wiki/Bajtkód
Zobrazit sloupec 

Kalkulačka - Výpočet

Výpočet čisté mzdy

Důchodová kalkulačka

Přídavky na dítě

Příspěvek na bydlení

Rodičovský příspěvek

Životní minimum

Hypoteční kalkulačka

Povinné ručení

Banky a Bankomaty

Úrokové sazby, Hypotéky

Směnárny - Euro, Dolar

Práce - Volná místa

Úřad práce, Mzda, Platy

Dávky a příspěvky

Nemocenská, Porodné

Podpora v nezaměstnanosti

Důchody

Investice

Burza - ČEZ

Dluhopisy, Podílové fondy

Ekonomika - HDP, Mzdy

Kryptoměny - Bitcoin, Ethereum

Drahé kovy

Zlato, Investiční zlato, Stříbro

Ropa - PHM, Benzín, Nafta, Nafta v Evropě

Podnikání

Města a obce, PSČ

Katastr nemovitostí

Katastrální úřady

Ochranné známky

Občanský zákoník

Zákoník práce

Stavební zákon

Daně, formuláře

Další odkazy

Auto - Cena, Spolehlivost

Registr vozidel - Technický průkaz, eTechničák

Finanční katalog

Volby, Mapa webu

English version

Czech currency

Prague stock exchange


Ochrana dat, Cookies

 

Copyright © 2000 - 2024

Kurzy.cz, spol. s r.o., AliaWeb, spol. s r.o.