函数与堆栈 点击:838 | 回复:0



笨猪

    
  • 精华:0帖
  • 求助:0帖
  • 帖子:13帖 | 106回
  • 年度积分:0
  • 历史总积分:181
  • 注册:2002年8月12日
发表于:2005-10-20 11:32:00
楼主
堆栈是用来保存局部对象的一段内存区。每个函数都有一个属于自己的栈区来保存局部对象或临时对象。当然,编译器经常会为了提高处理速度而把一些对象放到寄存器中。处理器提供专门的寄存器和指令来操纵堆栈区。 堆栈有两种典型的栈操作,压入和弹出。堆栈是向下增长的,即新压入栈的地址应该比原有对象的地址小。堆栈遵循先进后出的原则。 系统用两个寄存器来表示当前活动的栈,EBP指向活动栈首,ESP指向栈尾。在函数调用前,系统自动记录主调函数的EBP。 编译器编译一个函数时,会进行函数初始化工作: Push EBP Mov EBP,ESP; Sub ESP,ncount; 解释:第一条指令把原来的EBP保存到栈上(记录主调函数的EBP)。第二条指令创建新的活动栈区。第三条指令分配栈区大小。 ......


热门招聘
相关主题

官方公众号

智造工程师