zl程序教程

您现在的位置是:首页 >  工具

当前栏目

V8源码分析之d8 shell 简介(第四篇)

源码shell 分析 简介 V8 第四篇
2023-09-11 14:22:07 时间

0x00 前言

常听人说烦恼即菩提,我们凡人遇到烦恼只是深感烦恼,不见菩提。快乐是在心里,不假外求,求即往往不得,转为烦恼。 ------ 梁实秋

0x01 什么是 d8

V8源码编译出来的可执行程序名为d8。d8作为V8引擎在命令行中可以使用的交互shell存在。平常V8的shell是在浏览器中可以看到的。Google官方已经不记得d8这个名字的由来,但是做为"delveloper shell"的缩写,用首字母d和8结合,恰到好处。

0x02 d8接口

console.log函数

解决js脚本执行结果从shell中输出显示

$ cat test.js
console.log('Hello world!');

$ out.gn/x64.optdebug/d8 test.js
Hello world!

read/readline函数

在d8命令行中,接入到js中,可以使js读取文件内容。

d8> const license = read('LICENSE');
d8> license
"This license applies to all parts of V8 that are not externally
maintained libraries.  The externally maintained libraries used by V8
are:
… (etc.)"

load函数

在d8命令行中,load一个外部的js文件,并可以随后访问该文件中声明的内容。

$ cat util.js
function greet(name) {
  return 'Hello, ' + name;
}

$ d8
d8> load('util.js');
d8> greet('World!');
"Hello, World!"

arguments变量

与d8的命令一起使用的自定义参数可以在shell中使用。只需要把这些参数放在--后面。

out.gn/x64.optdebug/d8 -- hi

shell中使用参数

d8> arguments[0]
"hi"

0x03 参考文献

https://v8.dev/docs/d8