Programming languages 字节码设计?

Programming languages 字节码设计?,programming-languages,bytecode,vm-implementation,Programming Languages,Bytecode,Vm Implementation,我正在设计一种可编译成中间字节码的编程语言。然而,我在设计字节码结构时遇到了很多麻烦。有人对如何用二进制表示程序有什么指点吗?或者,有没有关于如何做到这一点的资源(最好是免费的)?我找到的最接近的是 编辑:更多信息:我正在实现我自己的垃圾收集方案,该方案针对不变性和并发性进行了大量优化。为了提高效率,我需要一些独特的字节码指令,允许程序与垃圾收集方案进行交互。您可能会发现查看维基百科关于字节码的文章很有用“并遵循一些您感兴趣的时代和风格的语言参考。介绍了GNU Smalltalk VM及其字节码

我正在设计一种可编译成中间字节码的编程语言。然而,我在设计字节码结构时遇到了很多麻烦。有人对如何用二进制表示程序有什么指点吗?或者,有没有关于如何做到这一点的资源(最好是免费的)?我找到的最接近的是


编辑:更多信息:我正在实现我自己的垃圾收集方案,该方案针对不变性和并发性进行了大量优化。为了提高效率,我需要一些独特的字节码指令,允许程序与垃圾收集方案进行交互。

您可能会发现查看维基百科关于字节码的文章很有用“并遵循一些您感兴趣的时代和风格的语言参考。

介绍了GNU Smalltalk VM及其字节码。谷歌搜索“smalltalk字节码”会带来其他资源。

不要设计你的字节码。这是没有必要的

我建议您深入研究并为您做大量的艰苦工作,在注释内容并解决范围等问题之后,只需要创建一个类似AST的模式进行翻译

龙之书还包括一些关于字节码的章节。计算机编程的艺术也可能有所帮助,因为混合语言陈述了一些(过时的)但重要的设计决策

实际上,您的中间代码应该是:

  • 编写的东西是一种高效的中间形式,允许流行的优化算法和翻译到后端,而不会因翻译错误等而失去语义:
  • 一个众所周知的和使用过的IR,您可以使用其他工具将其转换为机器代码。即使您使用.NET/Mono设置作为IR,如果它适合您的需要,那就太好了
  • 这都是关于你的需求,除非你需要,否则不要设计你自己的IR/字节码。如果其他东西合适,就用它!你不需要维护它

    您可以查看的列表,并使用查看为简单程序生成的字节码


    有关字节码优化的讨论,请参阅。

    谢谢您的输入,但我的语言最具创新性的功能在于内置数据结构及其垃圾收集方式,不幸的是,这些功能必须在VM级别实现。@Imagist。。。然后,也许一种前进的方式是构建一个字节码引擎,允许外部钩住这些东西,创建一个具有事件驱动内部和功能委托的字节码引擎。这将是非常棒的,它将允许人们在BC中指定他们想要使用的GC(以及其他东西)