4

我有兴趣使语言在AVM2上运行,我正在寻找关于从何处开始的建议。我意识到这绝不是一件微不足道的任务,但我想尝试一下,至少要学习一些实现一种语言的方法。向AVM2添加语言

我已经搞乱了ANTLR,并且一直在阅读语言开发的语法问题。我正在寻找的是建议采取的方式或有用的参考书/书籍。

例如,我想生成(脚本/手动)一些非常简单的AVM2字节码,并让它作为一个开始在虚拟机上运行。

感谢

回答

4

如果您对haXe不感兴趣,您基本上需要编写自己的编译器,将对象编译为ABC(Actionscript字节代码)。可从ABC获得的AVM2 Overview文档和AVM2可帮助您开始使用。这是一个相当彻底的文档,但要保持警惕字节码指令中的一些错字。

您还需要将字节码作为SWF容器的一部分包装在doABC标记中。您可以从SWF File Format文档中获得更多信息。

如果您想要开始编写数据结构(优化的int格式等),请随时在asmock中签出代码,这是我一直在研究的一个动态模拟项目。 SWF/ByteCode生成的东西有点杂乱,但有IDataOutput包装(SWFByteCode),可能会派上用场。

+0

谢谢理查德,我刚刚选择了那些文件,现在和他们坐下来。我会尝试使用ASMock代码来输出一个简单的SWF文件,该文件为一开始执行一些简单的算术运算。 – 2009-01-21 11:16:52

+0

生成字节码(flemit)的部分asmock实际上还没有记录/支持,但如果您有任何问题随时可以拍摄它们。 – 2009-01-21 11:43:09

1

看看haXe:它是可以针对不同的平台,包括AVM的开源语言。您可以深入了解SWF编译器源代码以获取灵感。