美文网首页
优雅地获取v8引擎二进制包

优雅地获取v8引擎二进制包

作者: 萧哈哈 | 来源:发表于2020-07-28 10:04 被阅读0次

起因:

为了研究下v8是怎么处理js代码的,于是跟着v8博客去编译v8源码。
受限于网络环境(科学上网也没安装成功),始终安装不成功。
偶然在一篇博客中发现了个开源项目 jsvu。亲试过后,发现在极短的时间内就可以安装好v8和v8-debug,简直是节约生命。不仅如此,它还可以用来安装其他JS引擎

人生苦短, 我用 jsvu (手动狗头)。

话不多说, 正题。

  1. 确保你的 node >= 10
npm install jsvu -g
  1. ~/.jsvu 加入到环境变量

export PATH="${HOME}/.jsvu:${PATH}"

  1. 运行 jsvu

$: jsvu

然后按照交互提示安装就好了。 只看v8相关的话, 就把 v8v8-debug 勾选安装就好了。

上个v8针对本地一小段代码生成字节码的demo:

// demo.js
'use strict';

var foo = "demo";
➜  Lab v8-debug --print-bytecode ./demo.js
[generated bytecode for function:  (0x16030829204d <SharedFunctionInfo>)]
Parameter count 1
Register count 3
Frame size 24
         0x1603082920e6 @    0 : 12 00             LdaConstant [0]
         0x1603082920e8 @    2 : 26 fa             Star r1
         0x1603082920ea @    4 : 27 fe f9          Mov <closure>, r2
         0x1603082920ed @    7 : 61 3b 01 fa 02    CallRuntime [DeclareGlobals], r1-r2
         0x1603082920f2 @   12 : 12 01             LdaConstant [1]
         0x1603082920f4 @   14 : 26 fb             Star r0
         0x1603082920f6 @   16 : 12 02             LdaConstant [2]
         0x1603082920f8 @   18 : 15 03 00          StaGlobal [3], [0]
         0x1603082920fb @   21 : 25 fb             Ldar r0
         0x1603082920fd @   23 : aa                Return 
Constant pool (size = 4)
0x1603082920ad: [FixedArray] in OldSpace
 - map: 0x1603080424ad <Map>
 - length: 4
           0: 0x160308292099 <FixedArray[1]>
           1: 0x160308292009 <String[10]: #use strict>
           2: 0x160308292031 <String[4]: #demo>
           3: 0x160308292021 <String[3]: #foo>
Handler Table (size = 0)
Source Position Table (size = 0)


相关资料:

相关文章

  • 优雅地获取v8引擎二进制包

    起因: 为了研究下v8是怎么处理js代码的,于是跟着v8博客去编译v8源码。受限于网络环境(科学上网也没安装成功)...

  • Mongodb笔记

    介绍 基于v8引擎的文档型数据库 安装 二进制包解压就可以使用 启动服务 例如: 连接数据库 入门命令 查看数据库...

  • JavaScript V8引擎

    很多人都知道v8引擎,v8引擎是一种js引擎的实现。在开始介绍v8之前,先搞清JavaScript引擎是什么,这里...

  • v8 TurboFan带来的优化

    v8 TurboFan带来的优化 Javascript 引擎 V8 即将采用新的引擎: TurboFan & Ig...

  • Android JS引擎(V8,JSC,Hermes)的使用

    Android端的JS引擎:V8,JSC,Hermes V8和JSC是Android端常见的JS引擎。Hermes...

  • 一.调用栈执行

    1.JavaScript引擎 1.1 V8引擎 1.是什么? 1.一个流行的JavaScript引擎是谷歌的V8引...

  • iOS 反编译APP

    工具:class-dump、hopper 获取APP二进制文件:.ipa文件解压缩后,右键显示包内容,获取二进制文...

  • v8引擎的垃圾回收

    v8引擎的垃圾回收机制 如何查看node内存使用情况? v8的内存分类 堆内存 // 对象、字符串、闭包新生代内存...

  • v8

    - sync-chromium-behind-proxy- V8引擎深入研究目录贴- 初探v8引擎- 新手应该如何...

  • 如何避免内存泄漏 - 2023-02-18

    V8引擎的内存限制 虽然V8引擎帮助我们实现了自动的垃圾回收管理,解放了我们勤劳的双手,但V8引擎中的内存使用也并...

网友评论

      本文标题:优雅地获取v8引擎二进制包

      本文链接:https://www.haomeiwen.com/subject/mswxrktx.html