compilation - 字节码栈与三个地址

标签 compilation interpreter bytecode language-implementation

在设计字节码解释器时,现在是否就堆栈或三地址格式(或其他格式)更好达成共识?我正在考虑以下注意事项:

  • 目标语言是一种与 Javascript 非常相似的动态语言。
  • 性能很重要,但目前开发速度和可移植性更重要。
  • 因此,实现将暂时严格为解释器;在资源允许的情况下,JIT 编译器可能会稍后出现。
  • 解释器将用 C 编写。
  • 最佳答案

    看看 OCaml 字节码解释器 - 它是同类中最快的之一。它几乎是一个堆栈机器,在加载时转换为线程代码(使用 GNU 计算的 goto 扩展)。您也可以生成类似 Forth 的线程代码,应该比较容易做到。

    但是,如果您牢记 future 的 JIT 编译,请确保您的堆栈机器不是真正功能齐全的堆栈机器,而是一个表达式树序列化形式(如 .NET CLI) - 这样您就可以将您的“堆栈”字节码转换为 3 地址形式,然后转换为 SSA。

    关于compilation - 字节码栈与三个地址,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6365956/

    相关文章:

    kotlin - kotlin/java 的类似 Rust 的注释编译?

    c++ - C++ 核心库的编译错误

    delphi - 如何在 SysInit._InitExe 调用之前放置代码?

    c++ - 如何打开两个独立的控制台并向它们写入不同的数据?

    java字节码编辑器?

    compilation - 如何使用 nagfor 列出预定义的预处理器变量

    haskell - 如何检查 Haskell 中的数据类型?

    Javascript,异步并返回到完全相同的地方

    actionscript-3 - 向 AVM2 添加语言

    assembly - LLVM IR 打印号码