调用子程序时,首先把什么入栈

调用子程序时,首先把什么入栈,第1张

调用子程序时,首先把参数入栈。堆栈使用在子程序的埋晌辩弯缺实现中,当调用子程序时,把参数入栈,把返回IP入栈,转移到子程序处,有局部变量谨知,则下移ESP,初始化该局部变量,这样用到EBP来寻址局部变量,参数的寻址同样要用到EBP。

支持子程序调用的数据结构是是栈,栈支持子程序调用。

关于栈:

栈衡族是一种只能在一端进行插入或删除的线性表,在主程序调用子函数时要保存主程序的当前状态,符合栈的特性。栈是一种只能在一端进行插入或删除的线性表。

栈是一种具有后进先出性质的数据结构,也就是说后存放的先取,先存放的后取洞拦团。这就如同要取出放在箱子里面底下的东西(放入的比较早的物体),首先要移开压在它上面的物体(放入的比较晚的物体)。

内存中的栈区处于相对较高的地址以地址的增长方向为上的话,栈地址是向下增长的。栈中分配局部变量空间,堆区是向上增长的用于分配程序员申请的内存空间。另外还有静态区是分配静态变量,全局变量空间的。只读区是分配常量和程序代码空间的。

由于栈上的空间是自动分配自动回收的,所以栈上的数据的生存周期只是在函数纳橘的运行过程中,运行后就释放掉,不可以再访问。栈在Windows下,栈是向低地址扩展的数据结构,是一块连续的内存的区域。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/12265232.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-24
下一篇 2023-05-24

发表评论

登录后才能评论

评论列表(0条)

保存