解释语言(如Ruby)是如何运行的?
我要学红宝石。我知道这是一种解释性语言。我知道编译后的语言最终会被翻译成机器代码,但是ruby解释器做什么呢?我读到解释器是用C编写的,但是ruby的每一行是否都会转换成C,然后再编译成机器代码?我也听说过JIT,但是如果这增加了答案的复杂性,你就不需要回答这个问题了。我要寻找的是我的Ruby代码发生了什么。它将Ruby代码转换为某种形式的更简单的“中间”表示(在最近的版本中,它编译成字节码)。它还在计算机内存中构建一个虚拟机,模拟执行该表示的物理机 这台机器反映了物理机器,至少在合理和有用的范围内。它通常有一个指令存储器、一个程序计数器、一个用于存储中间值和返回地址的堆栈等。一些更复杂的机器也有寄存器。有一个固定且相对原始的指令集(与Ruby等lanugages相比,而不是与实际的CPU指令集相比)。与CPU一样,虚拟机无休止地循环:解释语言(如Ruby)是如何运行的?,ruby,compiler-construction,programming-languages,interpreter,Ruby,Compiler Construction,Programming Languages,Interpreter,我要学红宝石。我知道这是一种解释性语言。我知道编译后的语言最终会被翻译成机器代码,但是ruby解释器做什么呢?我读到解释器是用C编写的,但是ruby的每一行是否都会转换成C,然后再编译成机器代码?我也听说过JIT,但是如果这增加了答案的复杂性,你就不需要回答这个问题了。我要寻找的是我的Ruby代码发生了什么。它将Ruby代码转换为某种形式的更简单的“中间”表示(在最近的版本中,它编译成字节码)。它还在计算机内存中构建一个虚拟机,模拟执行该表示的物理机 这台机器反映了物理机器,至少在合理和有用的范
- 读取当前指令(由程序计数器标识)
- (对其进行解码,尽管这通常比实际CPU要简单得多,至少比CISC CPU要简单得多。)
- 执行它(可能在进程中操作堆栈和/或寄存器)
- 更新程序计数器