Не создавайте свой байт-код это не нужно!
Я бы порекомендовал изучить LLVM и GNU Lightning , которые выполняют большую часть тяжелой работы за вас и требуют лишь создания AST-подобной схемы для перевода после того, как вы аннотировали все решено и так далее.
Книга драконов также содержит несколько разделов, посвященных байт-коду. Искусство компьютерного программирования может также помочь, так как язык Mix содержит некоторые (устаревшие), но важные дизайнерские решения.
Действительно, ваш промежуточный код должен быть:
- То, что вы написали, чтобы быть эффективной промежуточной формой, позволяющей использовать популярные алгоритмы оптимизации и переводить в бэкэнд без потери семантики из-за плохого перевода и т. П.
- Хорошо известный и используемый ИК, который вы можете использовать другими инструментами для перевода в машинный код. Даже если вы используете настройку .NET / Mono в качестве ИК, тогда, если это соответствует вашим потребностям, тогда отлично.
Это все о ваших требованиях, не создавайте свой собственный IR / байт-код, если вам не нужно. Если что-то еще подходит, используйте это! Вам не нужно поддерживать это!