runzhq / my_record

0 stars 0 forks source link

V8引擎 #9

Open runzhq opened 5 years ago

runzhq commented 5 years ago

源代码-→抽象语法树-→字节码-→JIT-→本地代码(V8引擎没有中间字节码)

V8使用C++开发,,在运行JavaScript之前,相比其它的JavaScript的引擎转换成字节码或解释执行,V8将其编译成原生机器码(IA-32, x86-64, ARM, or MIPS CPUs),并且使用了如内联缓存(inline caching)等方法来提高性能。

JavaScript代码编译的过程大致为:Script类调用Compiler类的Compile函数为其生成本地代码。Compile函数先使用Parser类生成AST,再使用FullCodeGenerator类来生成本地代码。本地代码与具体的硬件平台密切相关,FullCodeGenerator使用多个后端来生成与平台相匹配的本地汇编代码。

有点难。。