当前位置: 首页>前端>正文

字节码反编译成java 代码 js字节码反编译

什么是 D8

d8 是一个非常有用的调试工具,你可以把它看成是 debug for V8 的缩写。我们可以使用 d8 来查看 V8 在执行 JavaScript 过程中的各种中间数据,比如作用域、AST、字节码、优化的二进制代码、垃圾回收的状态,还可以使用 d8 提供的私有 API 查看一些内部信息。

下载D8

win64 平台:

https://storage.googleapis.com/chromium-v8/official/canary/v8-win64-dbg-8.4.109.zip

mac 平台:

https://storage.googleapis.com/chromium-v8/official/canary/v8-mac64-dbg-8.4.109.zip

linux64 平台:

https://storage.googleapis.com/chromium-v8/official/canary/v8-linux64-dbg-8.4.109.zip

使用D8

字节码反编译成java 代码 js字节码反编译,字节码反编译成java 代码 js字节码反编译_字节码指令,第1张

 解压下载包后,点击运行d8.exe,即可开启d8命令窗口

字节码反编译成java 代码 js字节码反编译,字节码反编译成java 代码 js字节码反编译_字节码指令_02,第2张

 在d8命令窗口中,我们可以写入JS代码,回车执行

字节码反编译成java 代码 js字节码反编译,字节码反编译成java 代码 js字节码反编译_字节码指令_03,第3张

当然我们也可以将d8命令加入系统变量,在任何位置的命令窗口中使用d8命令

字节码反编译成java 代码 js字节码反编译,字节码反编译成java 代码 js字节码反编译_字节码指令_04,第4张

d8命令常用配置项 

  • print-bytecode 查看生成的字节码
  • print-opt-code 查看优化后的代码
  • print-ast 查看中间生成的 AST
  • print-scopes 查看中间生成的作用域
  • trace-gc 查看这段代码的内存回收状态
  • trace-opt 查看哪些代码被优化了
  • trace-deopt 查看哪些代码被反优化了
  • turbofan-stats 打印优化编译器的一些统计数据

示例:使用d8命令将JS源码转成字节码

字节码反编译成java 代码 js字节码反编译,字节码反编译成java 代码 js字节码反编译_字节码指令_05,第5张

关于d8字节码指令的说明 

入门教程

浅析浏览器是如何工作的(一):V8引擎、JIT机制、JS代码解释执行与编译执行 - 古兰精

入门视频

深入V8引擎-第01课:上手开始看 V8 Ignition 解释器的字节码(Bytecodes)_哔哩哔哩_bilibili

[连载] 淦!移植个V8不可能这么难!(PLCT实验室2021春季讨论班)_哔哩哔哩_bilibili

 d8字节码指令说明其实就在v8源码文件中,下面是v8源码下载地址

v8/src at lkgr · v8/v8 · GitHub

在v8源码目录下该文件是各种字节码指令的说明

v8-lkgr\src\interpreter\interpreter-generator.cc

由于没有相关中文资料,所以大家有兴趣的话可以结合调试代码和interpreter-generator.cc文件说明,来理解字节码指令含义。

最后是PLCT实验室的github资料库

GitHub - plctlab/v8-internals: 面向编译器开发人员的V8内部实现文档


https://www.xamrdz.com/web/2sn1942426.html

相关文章: