我正在设计一种编译语言,编译成中间字节码.但是,我在设计字节码结构时遇到了很多麻烦.有没有人对如何用二进制表示程序有任何指示?或者,是否有任何资源(最好是免费的)如何做到这一点?我发现的最接近的是Lua解释器的字节码的描述.
编辑:更多信息:我正在实现我自己的垃圾收集方案,该方案针对不可变性和并发性进行了大量优化.为了提高效率,我需要一些独特的字节码指令,允许程序与垃圾收集方案进行交互.
不要设计你的字节码,这是不必要的!
我建议您查看LLVM和GNU Lightning,它们为您做了很多艰苦的工作,并且只要求您在注释事项并解决范围等问题后创建类似AST的模式进行翻译.
龙书还包括一些关于字节码的部分.计算机编程的艺术也可能有所帮助,因为Mix语言陈述了一些(过时的)但重要的设计决策.
真的,你的中间代码应该是:
东西,你写的是一个有效的中间形式,允许流行的优化算法和翻译到后端无语义的损失通过翻译和其他:
众所周知且使用的IR,您可以使用其他工具转换为机器代码.即使您使用.NET/Mono设置作为IR,如果它满足您的需求那么好.
这完全取决于您的要求,除非您需要,否则不要设计自己的IR /字节码.如果其他东西适合,请使用它!你不需要维护它!