javascript|V8 编译浅谈

javascript|V8 编译浅谈

文章图片

javascript|V8 编译浅谈

文章图片

javascript|V8 编译浅谈

文章图片

javascript|V8 编译浅谈

文章图片

javascript|V8 编译浅谈

文章图片

javascript|V8 编译浅谈

文章图片

javascript|V8 编译浅谈

文章图片

javascript|V8 编译浅谈

文章图片

javascript|V8 编译浅谈

文章图片

javascript|V8 编译浅谈

文章图片

javascript|V8 编译浅谈

文章图片

【javascript|V8 编译浅谈】javascript|V8 编译浅谈

文章图片

javascript|V8 编译浅谈


一 简介 本文是一个 V8 编译原理知识的介绍文章 , 旨在让大家感性的了解 JavaScript 在 V8 中的解析过程 。 本文主要的撰写流程如下:
解释器和编译器:计算机编译原理的基础知识介绍 V8 的编译原理:基于计算机编译原理的知识 , 了解 V8 对于 JavaScript 的解析流程 V8 的运行时表现:结合 V8 的编译原理 , 实践 V8 在解析流程中的具体运行表现 本文仅代表个人观点 , 文中若有错误欢迎指正 。
二 解释器和编译器 大家可能一直疑惑的问题:JavaScript 是一门解释型语言吗?要了解这个问题 , 首先需要初步了解什么是解释器和编译器以及它们的特点是什么 。
1 解释器
解释器的作用是将某种语言编写的源程序作为输入 , 将该源程序执行的结果作为输出 , 例如 Perl、Scheme、APL 等都是使用解释器进行转换执行:

2 编译器
编译器的设计是一个非常庞大和复杂的软件系统设计 , 在真正设计的时候需要解决两个相对重要的问题:
如何分析不同高级程序语言设计的源程序 如何将源程序的功能等价映射到不同指令系统的目标机器
中间表示(IR)
中间表示(Intermediate Representation , IR)是程序结构的一种表现方式 , 它会比抽象语法树(Abstract Syntax Tree , AST)更加接近汇编语言或者指令集 , 同时也会保留源程序中的一些高级信息 , 具体作用包括:
易于编译器的错误调试 , 容易识别是 IR 之前的前端还是之后的后端出的问题 可以使得编译器的职责更加分离 , 源程序的编译更多关注如何转换成 IR , 而不是去适配不同的指令集 IR 更加接近指令集 , 从而相对于源码可以更加节省内存空间