Байт-код або байтко́д (), іноді також використовується термін псевдокод (не плутати з неформальним записом алгоритму) — машинонезалежний код низького рівня, що генерується транслятором і виконується інтерпретатором. Більшість інструкцій байт-коду еквівалентні одній або кільком командам Асемблера. Трансляція в байт-код займає проміжне положення між компіляцією в машинний код і інтерпретацією.

Байт-код називається так тому, що довжина кожного коду операції — один байт, але довжина коду команди різна. Кожна інструкція є однобайтовим кодом операції від 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 Віртуальна машина Parrot virtual machine Платформа Microsoft .NET використовує Intermediate Language (IL), що виконується за допомогою Common Language Runtime (CLR). Дивись Керований код. PHP Forth EiffelStudio для мови програмування 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/ http://easyelectronics.ru/virtualnaya-mashina-i-bajt-kod.html http://searchcio-midmarket.techtarget.com/sDefinition/0,,sid183_gci211722,00.html https://web.archive.org/web/20110128133755/http://byte-code.com/portal/