Байт-код Дизайн? - PullRequest
       81

Байт-код Дизайн?

14 голосов
/ 17 июля 2009

Я разрабатываю язык программирования, который компилируется в промежуточный байт-код. Тем не менее, у меня много проблем при разработке структуры байт-кода. У кого-нибудь есть указания на то, как представить программу в двоичном формате? В качестве альтернативы, есть ли ресурсы (желательно бесплатные) о том, как это сделать? Самое близкое, что я нашел, - это описание байт-кода интерпретатора Lua .

РЕДАКТИРОВАТЬ: Немного больше информации: я реализую свою собственную схему сбора мусора, которая сильно оптимизирована для неизменности и параллелизма. Ради эффективности мне нужны некоторые уникальные инструкции байт-кода, которые позволяют программам взаимодействовать со схемой сборки мусора.

Ответы [ 4 ]

5 голосов
/ 17 июля 2009

Не создавайте свой байт-код это не нужно!

Я бы порекомендовал изучить LLVM и GNU Lightning , которые выполняют большую часть тяжелой работы за вас и требуют лишь создания AST-подобной схемы для перевода после того, как вы аннотировали все решено и так далее.

Книга драконов также содержит несколько разделов, посвященных байт-коду. Искусство компьютерного программирования может также помочь, так как язык Mix содержит некоторые (устаревшие), но важные дизайнерские решения.

Действительно, ваш промежуточный код должен быть:

  1. То, что вы написали, чтобы быть эффективной промежуточной формой, позволяющей использовать популярные алгоритмы оптимизации и переводить в бэкэнд без потери семантики из-за плохого перевода и т. П.
  2. Хорошо известный и используемый ИК, который вы можете использовать другими инструментами для перевода в машинный код. Даже если вы используете настройку .NET / Mono в качестве ИК, тогда, если это соответствует вашим потребностям, тогда отлично.

Это все о ваших требованиях, не создавайте свой собственный IR / байт-код, если вам не нужно. Если что-то еще подходит, используйте это! Вам не нужно поддерживать это!

4 голосов
/ 17 июля 2009

Эта статья описывает виртуальную машину GNU Smalltalk и ее байт-код. Google для «байт-кода smalltalk» найдет другие ресурсы.

2 голосов
/ 17 июля 2009

Вы можете просмотреть список инструкций байт-кода Python и использовать модуль dis , чтобы посмотреть, какие байт-коды генерируются для простых программ.

См. , сколько мест оптимизировано в pythons-bytecodeversion-2-5 для обсуждения оптимизации байт-кода.

1 голос
/ 17 июля 2009

Возможно, вам будет полезно посмотреть статью в Википедии о байт-коде http://en.wikipedia.org/wiki/Bytecode" и следовать некоторым ссылкам на интересующие вас языки возраста и стиля.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...