Подтвердить что ты не робот

Дизайн байткода?

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

EDIT: немного больше информации: я реализую свою собственную схему сбора мусора, которая сильно оптимизирована для неизменности и concurrency. Для эффективности я нуждаюсь в некоторых уникальных инструкциях байткода, которые позволяют программам взаимодействовать с схемой сбора мусора.

4b9b3361

Ответ 1

В этой статье описывается виртуальная машина GNU Smalltalk и ее байт-код. Googling для "smalltalk bytecode" придумает другие ресурсы.

Ответ 2

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

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

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

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

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

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

Ответ 4

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