【总结笔记】函数运行时内存的情况
函数调用与返回信息
假设函数 A 要调用函数 B,控制从函数 A 转移到函数 B,需要有 2 个信息:
-
(1)如何返回:函数 A 对应的机器指令执行到哪里?
在调用函数 B 时,会将下一条指令的地址压入函数 A 的栈帧
![在这里插入图片描述]()
-
(2)如何跳转:函数 B 的第一条机器指令所在的地址?
通过调用 call 指令:call 0x400540
参数传递与返回值
多数情况下参数的传递与获取返回值是通过 寄存器 的,大概寄存区不够用时,将剩下的参数压入调用者的栈帧中,这样被调用函数 B 就可以从执行调用的函数 A 获取到参数:

局部变量
局部变量的存储与参数的存储一致。先存放在寄存器,若寄存器不够放,则将多余的参数存放进调用者函数 A 的栈帧中。由于寄存器是共享的,所以在将寄存器保存某函数的局部变量时,一定要先将寄存器的初始值存储在调用者函数 A 的栈帧中。
由于栈区空间是有限的,所以我们不能创建过多的局部变量。



浙公网安备 33010602011771号