当前位置: 首页 > 后端技术 > Node.js

JS引擎--V8,2021最新执行流程分析

时间:2023-04-03 10:08:29 Node.js

什么是V8?V8整体执行流程V8流程细节分析什么是V8?V8是Google的开源高性能JavaScript和WebAssembly引擎,用C++编写。它用于Chrome和Node.js等。它实现了ECMAScript和WebAssembly,并运行在Windows7或更高版本、macOS10.12+和使用x64、IA-32、ARM或MIPS处理器的Linux系统上。V8可以独立运行,也可以嵌入到任何C++应用程序中。V8整体执行过程名词解释:源码:JavascriptParserProcessedasASTParser(解析器)AST抽象语法树Ignition解释器将AST转换为byteCodeSparkplugCompiler没有优化可以理解为预编译byteCode(非常快)byteCodeexecuteBytecode可以理解为交叉-平台代码(非平台机器代码)。Turbofan优化编译器编译字节码并优化代码。MachineCodemachinecodeV8各平台执行代码详细分析SourceCode指的是Javascript源代码,你在开发中使用的是TypeScript,需要编译成Js才能进入浏览器。可以这么理解,V8只认JS。接下来,取一个函数进行分析:functionadd(x,y){//<-顶层代码分析链接。返回x+y;//<-nontoplevel}parser解析器部分,学过编译的同学都知道有词法分析,语法分析...ASTAST指的是源代码抽象语法结构的树形表示。Ignition==>经过byteCodeParser,生成字节码。这是由V8中的BytecodeGenerator类生成的。TurbofanTurbofan基于字节码和热函数反馈类型生成优化的机器代码。Turbofan的很多优化过程,基本都类似于编译原理的后端优化,使用sea-of-node。SparkplugSparkplug旨在快速编译。非常快。Sparkplug代码的编译速度如此之快,几乎可以随时进行编译,因此可以比TurboFan代码更积极地分层。Sparkplug编译的是byteCode,Sparkplug编译时没有优化。Sparkplug只需要镜像解析器Ignition的行为,不需要一定的状态映射……最后两件事:可视化相关的架构设计,源码学习,日常开发。我将逐步深入分享。如果对你有帮助,请关注我的后续内容。有需要的同学可以加我的联系方式(在我的主页,拉你进群聊)。进阶javascript相关内容联系我主页微信,嗯,就是这样。再见~哦对了,还有一件事祝各位女神,女神节快乐。再见~