A | B | C | D | E | F | G | H | CH | I | J | K | L | M | N | O | P | Q | R | S | T | U | V | W | X | Y | Z | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9
Bajtkód neboli byte code (p-code , anglicky portable code , „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
- ActionScript je vykonáván v ActionScript Virtual Machine (AVM), což je součást Flash Player a AIR. Kód ActionScript je typicky zkompilován do bajtkódu formátu pomocí kompilátoru. Adobe Flash Professional a Adobe Flash Builder obsahují takovéto kompilátory a jsou dostupné via Adobe Flex SDK.
- Adobe Flash objekty.
- BANCStar, původně bajtkód pro nástroj pro tvorbu interface používaný jako právoplatný jazyk.
- Byte Code Engineering Library
- C to Java Virtual Machine compilers.
- CLISP implementace jazyku Common Lisp kompiluje pouze do bajtkódu
- CMUCL a Scieneer Common Lisp implementace jazyku Common Lisp mohou kompilovat do bajtkódu nebo do nativního kódu (bajtkód je mnohem více kompaktnější).
- Dalvik bytecode, navržený pro platformu Android, prováděný Dalvik virtual machine.
- EiffelStudio pro programovací jazyk Eiffel.
- Emacs je textový editor jehož větší část funkcionality je implementována pomocí jazyku Lisp. Tyto prvky jsou kompilovány do bajtkódu. Tato architektura umožňuje uživatelům upravovat editor pomocí vyššího jazyka, který po kompilaci do bajtkódu je poměrně efektivní.
- Embeddable Common Lisp implementace jazyka Common Lisp umožňuje kompilaci do bajtkódu nebo kódu jazyka C.
- Ericsson implementace jazyka Erlang využívá BEAM bytecode.
- programovací jazyk Icon.
- Infocom používá Z-machine pro vyšší přenositelnost jeho aplikací.
- Java bytecode, který je prováděn na Java Virtual Machine.
- LLVM, modulární bajtkód kompilátor a virtuální stroj.
- Lua, využívající registrově založený virtuální stroj, rovněž kompiluje LUAC formy skriptů pro malé rychlé systémy, které nemusí obsahovat kompilátor.
- m-code, kód jazyka MATLAB.
- Managed code stejně tak Microsoft .NET Common Intermediate Language, vykonávané .NET Common Language Runtime (CLR).
- O-code programovacího jazyka BCPL.
- Jazyk Objective Caml (Ocaml) volitelně kompiluje do kompaktní formy bajtkódu.
- p-code of UCSD Pascal implementation of the Pascal programming language.
- Parrot virtual machine
- R prostředí pro statistické výpočty nabízí kompilátor do bajtkódu díky balíčku, standardem od verze 2.13.0.
- Scheme 48 implementace jazyka Scheme využívající bajtkód interpreta.
- Bytecode velkého množství implementací jazyka Smalltalk.
- Interpret SPIN vestavěný v Parallax Propeller Microcontroller.
- SWEET16
- Visual FoxPro kompiluje do bajtkódu.
- YARV a Rubinius pro jazyk Ruby.
Externí odkazy
- Slovníkové heslo bajtkód ve Wikislovníku
Text je dostupný za podmienok Creative Commons Attribution/Share-Alike License 3.0 Unported; prípadne za ďalších podmienok. Podrobnejšie informácie nájdete na stránke Podmienky použitia.
Antény
Chemické zdroje elektriny
Chladenie v elektrotechnike
Elektrická sústava automobilu
Elektrická trakcia
Elektrické prístroje
Elektrické súčiastky
Elektrické spotrebiče
Elektrické stroje
Čítanie (elektrotechnika)
Činný výkon
Štatistická dynamika
Živý vodič
Admitancia
Antiparalelné zapojenie
Asynchrónny motor
Blúdivý prúd
Bočník (elektrotechnika)
Diak (polovodičový prvok)
Displej s kvapalnými kryštálmi
Elektrická inštalácia
Elektrická rezonancia
Elektrická sila
Elektrická vodivosť
Elektrické zariadenie
Elektrický obvod
Elektrický zvonec
Elektroenergetika
Elektromer
Elektrometer
Elektromobil
Elektromotor
Elektromotorické napätie
Elektrotechnický náučný slovník
Elektrotechnika
Elektrotechnológia
Fázor
Faradayova klietka
Frekvencia (fyzika)
Graetzov mostík
Impedancia
Indukčnosť
Induktancia
Istič
Izolácia (elektrotechnika)
Izolant
Jadro vodiča
Jednobran
Jednosmerný prúd
Joulovo teplo
Katóda
Koaxiálny kábel
Kompenzácia účinníka
Konduktometria
Konektor (elektrotechnika)
Korónový výboj
Lanko (elektrotechnika)
Leptanie
Logické hradlo
Magnetická susceptibilita
Magnetizácia (veličina)
Merný elektrický odpor
Mobilné zariadenie
Napájací zdroj
Napäťový chránič
Napäťový násobič
Nortonova veta
Odpínač
Odpojovač
OLED
Olovený akumulátor
Paralelné zapojenie
Peltierov článok
Plošná hustota elektrického prúdu
Poistka (elektrotechnika)
Posuvný prúd
Prúdový chránič
Prenosové médium
Prieletový klystrón
Primárny elektrochemický článok
Reaktancia
Rekuperácia (dopravný prostriedok)
Relé
Reproduktorová výhybka
Rezistancia
Rozhranie (interface)
Sériové zapojenie
Seebeckov jav
Sekundárny elektrochemický článok
Settopbox
Skrat
Sonar
Spínač
Spínaný zdroj
Straty v mikropásikových vedeniach
Striedavý prúd
Stupeň ochrany krytom
Svetelná výbojka
Symetrizačný člen
Technická normalizácia
Tepelné relé
Tepelne vodivostný detektor
Termočlánok
Théveninova veta
Transformátor
Transformátor s fázovou reguláciou
Trojfázová sústava
Tuhá fáza (elektronika)
Tyratrón
Usmerňovač (elektrotechnika)
Uzemnenie
Uzol (vodiče)
Vírivý prúd
Výbojka
Varistor
Ventilátor
Vodič (elektrotechnika)
Voltov stĺp
Vstavaný systém
Zásuvka (elektrotechnika)
Zdroj (elektrotechnika)
Zisk antény
Text je dostupný za podmienok Creative
Commons Attribution/Share-Alike License 3.0 Unported; prípadne za ďalších
podmienok.
Podrobnejšie informácie nájdete na stránke Podmienky
použitia.
www.astronomia.sk | www.biologia.sk | www.botanika.sk | www.dejiny.sk | www.economy.sk | www.elektrotechnika.sk | www.estetika.sk | www.farmakologia.sk | www.filozofia.sk | Fyzika | www.futurologia.sk | www.genetika.sk | www.chemia.sk | www.lingvistika.sk | www.politologia.sk | www.psychologia.sk | www.sexuologia.sk | www.sociologia.sk | www.veda.sk I www.zoologia.sk