我现在已经开发了自己的语言大约一年了,而且我一直专注于接触所有不同的方法。我的语言是软件解释的,所以我花了很多时间熟悉新的和较低级别的方法来解释代码,但现在我被卡住了。我已经逐行从原始解释转到语法树等等,我已经把它归到了Bytecode阶段。
我似乎无法在网上找到任何有关处理的内容,而不仅仅是创建可执行文件的Bytecode。
我的语言也可以编译,所以我有机器代码,我可以生成和工作,所以无论如何注入要在数据包或其他东西执行?
我已经坚持使用Bytecode执行了几个月而龙书在这方面没有帮助。
答案 0 :(得分:1)
您需要创建一个能够执行字节码的虚拟机,类似于Java
的JVM。
答案 1 :(得分:1)
超出简单字节码解释的下一步(可能是一个巨大的switch
语句或类似的情况),仍然可以被称为“解释”而不是“编译”,是翻译你的字节码成直接线程代码。
这种技术的一个令人印象深刻的例子是OCaml字节码解释器,请参阅代码here。请注意Instruct(...)
宏的不同可能定义 - 它用于临时switch
实现和优化的线程代码实现,具体取决于计算goto的可用性扩展
我怀疑你可以比这更进一步,任何较低级别将是“汇编”而不是“解释”。当然,您可以设计一个较低级别的虚拟机,定义从高级VM到低级别但是抽象级别的转换序列等。