Edit:Node 从 Node 8.3 开始使用字节码,在此之前,源代码直接编译为机器代码。
我进行了大量的 Python 编码,并且 .pyc 文件中总是存在字节码。
我想知道节点是否将其机器代码存储在类似的文件中,例如,将机器代码表示保留在磁盘上并在文件源未更改时重新使用它是有意义的。
如果是,node/v8 将该机器代码存储在哪里?
Edit 2:正如 @dystroy 在下面提到的,这是一个骗局如何查看v8生成的机器码? https://stackoverflow.com/questions/277423/how-can-i-see-the-machine-code-generated-by-v8
V8 于 2016 年引入了字节码解释器 Ignition。
您可以使用以下命令打印字节码--print-bytecode
(节点 8.3 及更高版本)。
$ node --print-bytecode incrementX.js -e 'function incrementX(obj) {return 1 + obj.x;} incrementX({x: 42});`
...
[generating bytecode for function: incrementX]
Parameter count 2
Frame size 8
12 E> 0x2ddf8802cf6e @ StackCheck
19 S> 0x2ddf8802cf6f @ LdaSmi [1]
0x2ddf8802cf71 @ Star r0
34 E> 0x2ddf8802cf73 @ LdaNamedProperty a0, [0], [4]
28 E> 0x2ddf8802cf77 @ Add r0, [6]
36 S> 0x2ddf8802cf7a @ Return
Constant pool (size = 1)
0x2ddf8802cf21: [FixedArray] in OldSpace
- map = 0x2ddfb2d02309 <Map(HOLEY_ELEMENTS)>
- length: 1
0: 0x2ddf8db91611 <String[1]: x>
Handler Table (size = 16)
See 理解V8的字节码 https://medium.com/dailyjs/understanding-v8s-bytecode-317d46c94775.
要查看机器代码,请使用--print-opt-code --code-comments
.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)