我正在阅读Pat Shaughnessy的Ruby Under a Microscope,并试图用Ruby如何执行你的程序的最新知识来补充自己。完全公开,我还没有完成这本书,但我正在努力理解。在一个高层次上,这是我所理解的。
Ruby Code -> Lexical Analysis -> Tokens
Tokens -> Parser -> AST Nodes
AST Node -> Compiler -> YARV Instructions (bytecode)
YARV Instructions -> YARV Interpreter -> ???
??? -> ??? -> Machine Language
我的问题是YARV解释器的输出(???)是什么?这些指令在哪里?还有,将其转换为机器语言所需的步骤是什么?
如果有人能帮我指出正确的方向,或者如果我错过了什么,我将不胜感激!
我试着在网上阅读了很多文章,但是它们似乎并没有真正扩展到编译YARV指令之后会发生什么。我知道生成YARV指令的语法指令存在于主Ruby repo中,但是接下来会发生什么呢?
1条答案
按热度按时间r9f1avp51#
我的问题是YARV解释器的输出(???)是什么?
没有输出。解释器不产生输出。它解释(另一个词是“执行”)代码。
更准确地说:解释器的输出是解释器运行的程序的输出。2所以,如果你写了一个程序,它应该把“Hello,World”打印到控制台,那么运行这个程序的解释器的输出将是把“Hello,World”打印到控制台。
这些指令位于何处?
在RAM中。
同样,要把它转化为机器语言,需要什么步骤呢?
没有。解释器进行解释。它不生成代码。将代码从一种语言翻译成另一种语言的东西被称为“编译器”。