zoukankan      html  css  js  c++  java
  • 深入理解栈

    栈:保存了一个函数调用所需要维护的信息,常被称为堆栈帧或活动记录.

    ebp:帧指针,固定不变,可以用来定位函数活动记录中的各个数据。ebp直接指向的是调用函数
    前ebp(即下图的old ebp)的值;在函数返回时,ebp可以通过读取这个值恢复到调用前的值。 

    intel下函数调用:
    • 参数压栈(从右向左)
    • 当前指令的下一条指令地址压栈
    • 跳转到函数体执行
    其中第2,3步由指令call一起执行,编译器可能要求某些寄存器在调用前后保持不变,或者生成
    的临时变量都需要压栈。

    多级调用栈布局
    PS:Debug模式下未初始化的局部变量出现"烫"或者"屯"原因->栈空间给变量分配空间的每个字节被初始化为0xCC或者0xCD;
       编译器这样做有助于判断一个变量是否初始化!
  • 相关阅读:
    C语言中标识符的作用域、命名空间、链接属性、生命周期、存储类型
    循环练习
    ArrayList集合

    方法
    表单标签
    HTML基础
    二维数组
    一维数组
    switch选择结构
  • 原文地址:https://www.cnblogs.com/Seiyagoo/p/2283626.html
Copyright © 2011-2022 走看看