在设计字节码解释器时,现在是否就堆栈或三地址格式(或其他格式)更好达成共识?我正在考虑以下注意事项:
最佳答案
看看 OCaml 字节码解释器 - 它是同类中最快的之一。它几乎是一个堆栈机器,在加载时转换为线程代码(使用 GNU 计算的 goto 扩展)。您也可以生成类似 Forth 的线程代码,应该比较容易做到。
但是,如果您牢记 future 的 JIT 编译,请确保您的堆栈机器不是真正功能齐全的堆栈机器,而是一个表达式树序列化形式(如 .NET CLI) - 这样您就可以将您的“堆栈”字节码转换为 3 地址形式,然后转换为 SSA。
关于compilation - 字节码栈与三个地址,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6365956/