gpt4 book ai didi

javascript - 如何将 JS 转换为本地机器代码(使用 v8)

转载 作者:行者123 更新时间:2023-12-01 03:27:33 25 4
gpt4 key购买 nike

我已经尝试过网址中的建议: How can I see the machine code generated by v8?

这是我所做的:

git clone https://chromium.googlesource.com/chromium/tools/depot_tools

sudo apt-get install libv8-dev
sudo apt-get install g++
sudo apt-get install libgtk2.0-dev
sudo apt-get install g++-multilib

export PATH="$PATH":`pwd`/depot_tools

fetch v8

gclient sync

make ia32.release objectprint=on disassembler=on

v8/out/ia32.release/d8 --print-all-code hello.js > output.txt

(脚本就是:print("hello"))

下面是输出:

kind = STUB
major_key = JSEntryStub
compiler = unknown
Instructions (size = 131)
0x35d06040 0 55 push ebp
0x35d06041 1 89e5 mov ebp,esp
0x35d06043 3 6a02 push 0x2
......
0x35d060c2 82 c3 ret
Handler Table (size = 12)

RelocInfo (size = 23)
0x35d06047 external reference (Isolate::context_address) (0xa9533dc)
0x35d06050 external reference (Isolate::c_entry_fp_address) (0xa953410)
......
kind = STUB
major_key = JSEntryStub
compiler = unknown
Instructions (size = 131)
0x35d06120 0 55 push ebb
......

确实,我有一批代码,但它与输入脚本没有什么不同。顺便说一下,对于一个简单的脚本来说,输出确实太多了(大约13M文本)。

谢谢。

最佳答案

对于当前的 V8 版本(5.9 或更高版本),您可能需要 --print-opt-code 标志:最初,V8 为其解释器生成字节代码(您可以使用 --打印字节码);一旦一个函数“热”(即花费大量时间执行它),它就会被发送到优化编译器为其生成机器代码。

请注意,您不能将 V8 用作通用 JavaScript 到机器代码的编译器。上面提到的标志用于调试;没有(支持的或简单的)方法从其输出生成工作二进制文件。

关于javascript - 如何将 JS 转换为本地机器代码(使用 v8),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44737071/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com