4
|
Erik Campobadal Christophe Herreman · 技术社区 · 6 年前 |
![]() |
1
5
你希望有一本书,描述如何建立超高性能的口译员。要做到这一点,你基本上模糊了“解释器”和“编译器”以获得效率。待办事项 那个 ,简单的答案是,使用书中的每一个编译器技巧(明显的复数形式)。你有很多书要读。 但是,您想知道的核心内容可以在有关SELF的文章中找到,SELF是一种快速运行时“解释器”,它定义了JIT编译器的工作方式,尤其是在动态类型的情况下: 基于原型的SELF-a动态类型面向对象语言的有效实现 https://www.researchgate.net/profile/David_Ungar2/publication/234781317_An_Efficient_Implementation_of_Self_a_Dynamically-Typed_Object-Oriented_Language_Based_on_Prototypes/links/540f8fbe0cf2f2b29a3de0a6.pdf 您可以访问scholar.google.com搜索“JIT编译器”和“Craig Chambers”的任何东西。 |
![]() |
2
0
虽然不是完全直接相关,但您可能有兴趣研究RPython(“reduced”Python)如何处理初始代码分析。生成流程图后 strictly validates variable single-typing (尽管CPython是一种完全动态的语言,Pypy是一种用RPython编写的Python解释器,通过装箱支持完全动态)。RPython还自然地集成了流图级别的JIT(利用“保护”指令,允许在违反期望时安全地返回专用代码),而不需要太多的显式注释,将该特性“赠予”任何使用它编写的语言的解释器。此外,它还提供多种内存管理方案(例如,多代标记/扫描)。 总而言之:即使变量是“动态”的,代码通常不是,因此静态分析可以为每个变量的类型提供答案。 |
![]() |
3
0
如果您有兴趣在GraalVM上为您的语言构建一个解释器,请看 simple language Truffle ,这是一个用于实现GraalVM使用的编程语言的框架。它提供了一个API来描述AST中的节点以及它们应该做什么。 您可以找到更多在Truffle上实现的语言示例 here gitter chat |