P-код
P-код (Пи-код) — концепция аппаратно-независимого исполняемого кода в программировании, часто его определяют как «Ассемблер для гипотетического процессора». Этот термин обычно применяется для обозначения реализаций виртуальной машины для языка программирования Паскаль (например, в UCSD p-System), иногда также используется в качестве синонима термину байт-код для различных виртуальных машин (например, виртуальной Java-машина, байт-кода CIL в платформе .NET и т. п.).
Сама концепция абстрактного машинного кода для языков программирования впервые была применена в 1966 году (O-code для BCPL). Термин P-код был введен в начале 1970-х годов коллективом под руководством Никлауса Вирта при реализации переносимого компилятора для языка Паскаль. Введение промежуточного p-кода упростило портирование языка: компилятор (написанный на Паскале) создавал из исходного кода последовательность p-кодов, исполняемую p-системой (интерпретатором p-кода, написанном, например, на ассемблере). Для переноса языка на новую платформу требовалось лишь адаптировать к ней p-систему, что в короткие сроки было выполнено для платформ 6502, 8080, Z-80, PDP-11 и многих других[1][2][3].
Применение
править- O-code[англ.] для реализации BCPL
- UCSD p-System — одна из первых реализаций виртуальной машины (p-машины)
- Microsoft P-Code[англ.] — P-код компании Microsoft[4]
- Байт-код — код виртуальной машины в виде потока байтов (наиболее часто с кодами операций длиной в 1 байт)
- Шитый код — ещё один способ реализации кода для виртуальной машины
Примечания
править- ↑ Руслан Богатырев. Летопись языков Паскаль Архивная копия от 30 мая 2015 на Wayback Machine, Мир ПК, № 04/2001
- ↑ Компиляторы: принципы, технологии и инструментарий Архивная копия от 4 марта 2016 на Wayback Machine — Вильямс, ISBN 9785845901897, стр 517 «12.2 Компиляторы Pascal»
- ↑ THE UCSD P-SYSTEM MUSEUM Архивная копия от 17 февраля 2015 на Wayback Machine, 2004 (англ.)
- ↑ VB P-code Information by Mr Silver Архивировано 22 декабря 2015 года.
Это заготовка статьи об информационных технологиях и вычислительной технике. Помогите Википедии, дополнив её. |