Tags
nodejs
Created
Apr 9, 2018 7:08 AM
`node -r` 这种用法,这样不用改源码就能加入其他模块
- p 打印执行的代码结果
-print-bytecode-print-bytecode-filter-print-code// 打印出TurboFan**生成的汇编代码-print-opt-code
- [generated bytecode for function: add (0x29e627015191 <SharedFunctionInfo add>)]: 这行告诉我们,接下来的字节码是为 add 函数生成的。0x29e627015191 是这个函数在内存中的地址。
- Bytecode length: 6: 整个字节码的长度是 6 字节。
- Parameter count 3: 该函数有 3 个参数。包括传入的 a,b 以及 this。
- Register count 0: 该函数没有使用任何寄存器。
- Frame size 0: 该函数的帧大小是 0。帧大小是指在调用栈上分配给这个函数的空间大小,用于存储局部变量、函数参数等。
- OSR urgency: 0: On-Stack Replacement(OSR)优化的紧急程度是 0。OSR 是一种在运行时将解释执行的函数替换为编译执行的函数的技术,用于提高性能。
- Bytecode age: 0: 字节码的年龄是 0。字节码的年龄是指它被执行的次数,年龄越高,说明这个字节码被执行的越频繁,可能会被 V8 引擎优化。
- Ldar a1 表示将寄存器中的值加载到累加器中 ,这行是字节码的第一条指令
- Add a0, [0] 从 a0 寄存器加载值并且将其与累加器中的值相加,然后将结果再次放入累加器 。
- Return 结束当前函数的执行,并把控制权传给调用方,将累加器中的值作为返回值
- S> 表示这是一个“Safepoint”指令,V8 引擎可以在执行这条指令时进行垃圾回收等操作。
- E> 表示这是一个“Effect”指令,可能会改变程序的状态。
- Constant pool (size = 0): 常量池的大小是 0。常量池是用来存储函数中使用的常量值的。
- Handler Table (size = 0): 异常处理表的大小是 0。异常处理表是用来处理函数中可能出现的异常的。
- Source Position Table (size = 8): 源代码位置表的大小是 8。源代码位置表是用来将字节码指令与源代码行号关联起来的,方便调试。
- 0x29e627015bc1 \<ByteArray[8]>: 这行是源代码位置表的具体内容,显示了每个字节码指令对应的源代码行号和列号。