Ця стаття потребує додаткових для поліпшення її . (червень 2018) |
Байт-код або байтко́д (англ. byte-code), іноді також використовується термін псевдокод (не плутати з неформальним записом алгоритму) — машинонезалежний код низького рівня, що генерується транслятором і виконується інтерпретатором. Більшість інструкцій байт-коду еквівалентні одній або кільком командам Асемблера. Трансляція в байт-код займає проміжне положення між компіляцією в машинний код і інтерпретацією.
Байт-код називається так тому, що довжина кожного коду операції — один байт, але довжина коду команди різна. Кожна інструкція є однобайтовим кодом операції від 0 до 255, за яким розташовані такі параметри, як регістри або адреси пам'яті. Це в типовому випадку, але специфікація байт-коду значно відрізняється в мовах програмування.
Програма на байт-коді зазвичай виконується інтерпретатором байт-коду (його ще називають віртуальною машиною, оскільки він подібний до комп'ютера). Перевага — в портативності, тобто один і той самий байт-код може виконуватися на різних платформах і архітектурі — цю перевагу мають всі мови, що інтерпретуються. Проте, оскільки байт-код зазвичай є менш абстрактним, компактним і більш «комп'ютерним» ніж початковий код, ефективність байт-коду зазвичай вища, ніж чиста інтерпретація початкового коду, призначеного для правки людиною. З цієї причини багато сучасних інтерпретованих мов насправді транслюють в байт-код і запускають інтерпретатор байт-коду. До таких мов відносяться Perl, PHP і Python. Програми на Java зазвичай передаються на цільову машину у вигляді байт-коду, який перед виконання транслюється в машинний код «на льоту» — за допомогою JIT-компіляції. У стандарті відкритих завантажувачів Open Firmware фірми Sun Microsystems байт-код представляє оператори мови Forth.
Водночас можливе створення процесорів, для яких цей байт-код є безпосередньо машинним кодом (такі процесори існують, наприклад, для Java і Forth).
Також деякий інтерес представляє p-код (p-code), який схожий на байт-код, але фізично може бути менш лаконічним і сильно варіюватися по довжині інструкції. Він працює на дуже високому рівні, наприклад «надрукувати рядок» або «очистити екран». P-код використовується в деяких реалізаціях BASIC і Паскаля.
Мови та середовища програмування, що використовують байт-код
Неповний перелік:
- Байт-код Java виконується віртуальною машиною Java (Java Virtual Machine).
- Smalltalk
- Python
- Віртуальна машина
- Платформа Microsoft .NET використовує Intermediate Language (IL), що виконується за допомогою Common Language Runtime (CLR). Дивись Керований код.
- PHP
- Forth
- для мови програмування Eiffel
- Objective Caml
- Erlang
Приклади
Python
Код:
>>> print("Hello, World!") Hello, World!
Байт-код:
>>> import dis #імпортуємо модуль "dis" - дизасамблер, перетворює байт-код Python на його мнемоніки >>> dis.dis('print("Hello, World!")') 1 0 LOAD_NAME 0 (print) 2 LOAD_CONST 0 ('Hello, World!') 4 CALL_FUNCTION 1 6 RETURN_VALUE
Java
Код:
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); }
Байт-код:
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; //Field java/lang/System.out:Ljava/io/PrintStream; 34: iload_1 35: invokevirtual #85; //Method java/io/PrintStream.println:(I)V 38: iinc 1, 1 41: goto 2 44: return
Посилання
- http://www.osp.ru/cw/2001/06/9339/ [ 28 жовтня 2010 у Wayback Machine.]
- http://easyelectronics.ru/virtualnaya-mashina-i-bajt-kod.html [ 1 січня 2011 у Wayback Machine.]
- http://searchcio-midmarket.techtarget.com/sDefinition/0,,sid183_gci211722,00.html [ 8 грудня 2010 у Wayback Machine.]
Це незавершена стаття про інформаційні технології. Ви можете проєкту, виправивши або дописавши її. |
Вікіпедія, Українська, Україна, книга, книги, бібліотека, стаття, читати, завантажити, безкоштовно, безкоштовно завантажити, mp3, відео, mp4, 3gp, jpg, jpeg, gif, png, малюнок, музика, пісня, фільм, книга, гра, ігри, мобільний, телефон, android, ios, apple, мобільний телефон, samsung, iphone, xiomi, xiaomi, redmi, honor, oppo, nokia, sonya, mi, ПК, web, Інтернет
Cya stattya potrebuye dodatkovih posilan na dzherela dlya polipshennya yiyi perevirnosti Bud laska dopomozhit udoskonaliti cyu stattyu dodavshi posilannya na nadijni avtoritetni dzherela Zvernitsya na storinku obgovorennya za poyasnennyami ta dopomozhit vipraviti nedoliki Material bez dzherel mozhe buti piddano sumnivu ta vilucheno cherven 2018 Bajt kod abo bajtko d angl byte code inodi takozh vikoristovuyetsya termin psevdokod ne plutati z neformalnim zapisom algoritmu mashinonezalezhnij kod nizkogo rivnya sho generuyetsya translyatorom i vikonuyetsya interpretatorom Bilshist instrukcij bajt kodu ekvivalentni odnij abo kilkom komandam Asemblera Translyaciya v bajt kod zajmaye promizhne polozhennya mizh kompilyaciyeyu v mashinnij kod i interpretaciyeyu Bajt kod nazivayetsya tak tomu sho dovzhina kozhnogo kodu operaciyi odin bajt ale dovzhina kodu komandi rizna Kozhna instrukciya ye odnobajtovim kodom operaciyi vid 0 do 255 za yakim roztashovani taki parametri yak registri abo adresi pam yati Ce v tipovomu vipadku ale specifikaciya bajt kodu znachno vidriznyayetsya v movah programuvannya Programa na bajt kodi zazvichaj vikonuyetsya interpretatorom bajt kodu jogo she nazivayut virtualnoyu mashinoyu oskilki vin podibnij do komp yutera Perevaga v portativnosti tobto odin i toj samij bajt kod mozhe vikonuvatisya na riznih platformah i arhitekturi cyu perevagu mayut vsi movi sho interpretuyutsya Prote oskilki bajt kod zazvichaj ye mensh abstraktnim kompaktnim i bilsh komp yuternim nizh pochatkovij kod efektivnist bajt kodu zazvichaj visha nizh chista interpretaciya pochatkovogo kodu priznachenogo dlya pravki lyudinoyu Z ciyeyi prichini bagato suchasnih interpretovanih mov naspravdi translyuyut v bajt kod i zapuskayut interpretator bajt kodu Do takih mov vidnosyatsya Perl PHP i Python Programi na Java zazvichaj peredayutsya na cilovu mashinu u viglyadi bajt kodu yakij pered vikonannya translyuyetsya v mashinnij kod na lotu za dopomogoyu JIT kompilyaciyi U standarti vidkritih zavantazhuvachiv Open Firmware firmi Sun Microsystems bajt kod predstavlyaye operatori movi Forth Vodnochas mozhlive stvorennya procesoriv dlya yakih cej bajt kod ye bezposeredno mashinnim kodom taki procesori isnuyut napriklad dlya Java i Forth Takozh deyakij interes predstavlyaye p kod p code yakij shozhij na bajt kod ale fizichno mozhe buti mensh lakonichnim i silno variyuvatisya po dovzhini instrukciyi Vin pracyuye na duzhe visokomu rivni napriklad nadrukuvati ryadok abo ochistiti ekran P kod vikoristovuyetsya v deyakih realizaciyah BASIC i Paskalya Movi ta seredovisha programuvannya sho vikoristovuyut bajt kodNepovnij perelik Bajt kod Java vikonuyetsya virtualnoyu mashinoyu Java Java Virtual Machine Smalltalk Python Virtualna mashina Platforma Microsoft NET vikoristovuye Intermediate Language IL sho vikonuyetsya za dopomogoyu Common Language Runtime CLR Divis Kerovanij kod PHP Forth dlya movi programuvannya Eiffel Objective Caml ErlangPrikladiPython Kod gt gt gt print Hello World Hello World Bajt kod gt gt gt import dis importuyemo modul dis dizasambler peretvoryuye bajt kod Python na jogo mnemoniki gt gt gt dis dis print Hello World 1 0 LOAD NAME 0 print 2 LOAD CONST 0 Hello World 4 CALL FUNCTION 1 6 RETURN VALUE Java Div takozh Virtualna mashina Java Kod outer for int i 2 i lt 1000 i for int j 2 j lt i j if i j 0 continue outer System out println i Bajt kod 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 Field java lang System out Ljava io PrintStream 34 iload 1 35 invokevirtual 85 Method java io PrintStream println I V 38 iinc 1 1 41 goto 2 44 returnPosilannyahttp www osp ru cw 2001 06 9339 28 zhovtnya 2010 u Wayback Machine http easyelectronics ru virtualnaya mashina i bajt kod html 1 sichnya 2011 u Wayback Machine http searchcio midmarket techtarget com sDefinition 0 sid183 gci211722 00 html 8 grudnya 2010 u Wayback Machine Ce nezavershena stattya pro informacijni tehnologiyi Vi mozhete dopomogti proyektu vipravivshi abo dopisavshi yiyi