出于好奇,我发现在v8实现中,JS字节码是由解释器汇编程序执行的,然后到CodeAssembly



出于好奇,我发现在v8实现中,JS Bytecode是由解释器汇编程序执行的,然后再执行到CodeAssembly。为什么在字节码和机器码之间有一个解释器汇编程序?有没有一种方法可以将解释器汇编程序(我认为它是一种IR(转换为LLVM IR,使其成为更接近js字节码的LLVM IR表示。

似乎有一个误解:InterpreterAssembler用于在V8的构建过程中创建字节码处理程序。它不参与字节码的执行(事实上,它甚至没有作为最终V8二进制文件的一部分提供(。此外,字节码在执行之前不会被翻译成机器代码(这就是为什么我们称之为"解释器"的原因;如果它首先生成机器代码,我们会称其为"编译器"(。

CCD_ 2产生特定形式的IR;涡轮风扇";编译器使用。目前还没有将其转换为LLVM IR的方法。

最新更新