【发布时间】:2017-11-27 22:57:50
【问题描述】:
我已经尝试了网址中的建议: 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 文本)。
谢谢。
【问题讨论】:
-
我怀疑您正在尝试做一些没有意义的事情。另见:meta.stackexchange.com/questions/66377/what-is-the-xy-problem
-
您将看到的大部分由 jit 生成的代码很可能来自 V8 运行时库,其中 (1) 很多,并且 (2) 对于不同的脚本相同。尝试在输出中搜索代码中的一些唯一标识符。
标签: javascript code-generation v8