AME*_*AME 3 interpreter bytecode
我确实理解这两种设计背后的技术概念,但是什么使字节码解释器通常更快?有一本好书,有人可以指点我吗?
最明显的原因是AST通常仍然是太高级别,而字节码语义对于执行来说可能是微不足道的.AST行走解释器中最慢的东西通常是上下文查找:所有变量,参数等都由它们的名称引用,而在字节码中它们通常会被剥离,并且将使用寄存器编号或堆栈操作.
当然,字节码可以被认为是AST行走的特殊情况 - 具有平坦,简单的"AST",并且可能是优化的"walker"(例如,使用线程代码转换).在ad hoc AST和高度专业化的字节码之间存在许多可能的状态 - 例如,为了解释函数语言,可以保持AST结构但是用De Bruijn索引替换变量名称.
| 归档时间: |
|
| 查看次数: |
1036 次 |
| 最近记录: |