Байт-код!!!

Байт-код
Байт-код (байткод; англ. Bytecode, більш загально - p-код, p-code від portable code) - стандартне проміжне представлення [en], в яке може бути переведена комп'ютерна програма автоматичними засобами. У порівнянні з вихідним кодом, зручним для створення і читання людиною, байт-код - це компактне представлення програми, котра пройшла синтаксичний і семантичний аналіз. У ньому в явному вигляді закодовані типи, області видимості і інші конструкції. З технічної точки зору, байт-код є машинно-незалежний код низького рівня, що генерується транслятором з вихідного коду.
Багато сучасні мови програмування, особливо інтерпретовані, використовують байт-код для полегшення і прискорення роботи інтерпретатора. Трансляція в байт-код є методом, проміжним по ефективності між прямою інтерпретацією і компіляцією в машинний код.
За формою байт-код схожий на машинний код, але призначений для виконання не реальним процесором, а віртуальною машиною. В якості віртуальної машини зазвичай виступає інтерпретатор відповідної мови програмування (іноді доповнений JIT- або AOT-компілятором). Специфікації байт-коду і виконуючих його віртуальних машин можуть сильно відрізнятися для різних мов: часто байт-код складається з інструкцій для стековой [en] віртуальної машини [1], однак можуть використовуватися і реєстрові [en] машини [2] [3]. Тим не менше, більшість інструкцій байт-коду зазвичай еквівалентні одній або кільком командам асемблера.
Байт-код називається так, тому що довжина кожного коду операції традиційно становить один байт. Кожна інструкція зазвичай являє собою однобайтовий код операції (від 0 до 255), за яким можуть слідувати різні параметри, наприклад, номер регістра або адреса в пам'яті.
Сфера використання
Програма на байт-коді зазвичай виконується інтерпретатором байт-коду. Перевага байт-коду в більшій ефективності та портіруемость, тобто один і той же байт-код може виконуватися на різних платформах і архітектурі, для яких реалізований інтерпретатор. Те ж саме перевага дають безпосередньо інтерпретовані мови, проте, оскільки байт-код зазвичай менш абстрактний і більш компактний, ніж вихідний код, ефективність інтерпретації байт-коду зазвичай вище, ніж чиста інтерпретація вихідного коду або інтерпретація АСД. Крім того, інтерпретатор байт-коду часто простіше інтерпретатора вихідного коду і його простіше перенести (перенести) на іншу апаратну платформу.
У високопродуктивних реалізаціях віртуальних машин може застосовуватися комбінація інтерпретатора і JIT-компілятора, який під час виконання програми транслює часто використовувані фрагменти байт-коду в машинний код, застосовуючи при цьому різні оптимізації. Замість JIT-компіляції може застосовуватися AOT-компілятор, що транслює байт-код в машинний код попередньо, до виконання.
У той же час можливе створення процесорів, для яких даний байт-код є безпосередньо машинним кодом (такі експериментальні процесори створювалися, наприклад, для мов Java і Форт).
Походження
Серед перших систем, які використовували байт-код, були O-code для BCPL (1960-ті), Smalltalk (1976) , SIL (System Implementation Language) для мови Snobol-4 (1967), p-код (p- code, 1970-ті, за участю Ніклауса Вірта) для їх переносите компіляторів мови програмування Pascal .
Варіанти p-коду широко використовувалися в різних реалізаціях мови Pascal, наприклад, в UCSD p-System (UCSD Pascal). [8]
Література
Посилання
Байт-код Википедия Байткод\ Хабрахабр
Developed by Інститут Програмних Систем