JavaScript是如何工作的:JavaScript的共享传递和按值传递(3)
发布时间:2019-04-18 17:47 所属栏目:21 来源:前端小智
导读:在调用 sum 函数之前,将其参数推入堆栈 ESP-[......] ESP-[100] [90] [.......] 然后,它将返回地址推送到堆栈。返回地址存储在EIP 寄存器中: ESP-[OldEIP] [100] [90] [.......] 接下来,它保存基指针 ESP-[OldEB
在调用 sum 函数之前,将其参数推入堆栈
然后,它将返回地址推送到堆栈。返回地址存储在EIP 寄存器中:
接下来,它保存基指针
然后更改 EBP 并将调用保存寄存器推入堆栈。
为局部变量分配空间:
这里执行加法:
我们的返回值是190,把它赋给了 EAX。
EAX 是"累加器"(accumulator), 它是很多加法乘法指令的缺省寄存器。 然后,恢复所有寄存器值。
并将控制权返回给调用函数,推送到堆栈的参数被清除。
调用函数现在从 EAX 寄存器检索返回值到 s 的内存位置。
我们已经看到了内存中发生了什么以及如何将参数传递汇编代码的函数。 调用函数之前,调用者将参数推入堆栈。因此,可以正确地说在 js 中传递参数是传入值的一份拷贝。如果被调用函数更改了参数的值,它不会影响原始值,因为它存储在其他地方,它只处理一个副本。
让我们看看传递引用数据类型时会发生什么。
(编辑:ASP站长网) |
相关内容
网友评论
推荐文章
热点阅读