美文网首页
栈帧与函数调用流程(内存)---- 8086处理器

栈帧与函数调用流程(内存)---- 8086处理器

作者: xymspace | 来源:发表于2020-04-22 23:36 被阅读0次

栈帧:一个函数执行的环境,一个栈帧代表一个函数

栈帧结构:

一组栈帧
寄存器 -->SP
局部变量
bp以前的值 -->BP
返回地址
参数

SP:指向栈顶
BP:指向上一个函数返回值的位置

函数调用流程(内存):

  • push 参数
  • push 函数的返回地址
  • push bp (保留bp的旧值,方便后面恢复)
  • mov bp , sp (保留sp之前的值,方便后面恢复)
  • sub sp , 空间大小 (给局部变量分配空间)
  • 保护可能要用的寄存器
  • -----执行业务逻辑------
  • 恢复寄存器的值
  • mov sp , bp (恢复sp到旧值)
  • pop bp (恢复bp到旧值)
  • ret (pop返回地址,执行下一条指令)
  • 恢复栈平衡

相关文章

  • 栈帧与函数调用流程(内存)---- 8086处理器

    栈帧:一个函数执行的环境,一个栈帧代表一个函数 栈帧结构: 一组栈帧寄存器-->SP局部变量bp以前的值-->BP...

  • 8086 汇编之函数调用

    一、 8086 汇编之函数调用栈平衡 栈平衡:函数调用前后,栈顶指针指向同一个位置如果不指向同一个位置则说明有内存...

  • ARM 读书笔记

    寄存器 内存 和 栈R0-R3 传递参数 与返回值R7 帧指针,指向母函数 与被调用字函数在栈中的交界...

  • 宏、普通函数、内联函数之间的区别

    普通函数 调用时向栈中push函数帧,调用结束后pop函数帧。编译器会在函数调用语句的前后,插入入栈和出栈的辅助代...

  • 5. linux下的栈帧分析

    @toc 1.linux下的栈帧分析2. 栈帧 1. 栈帧 每一次函数的调用,都会在调用栈上维护一个独立的栈帧(s...

  • 巧用函数栈实现栈的反转

    一、函数栈 函数的调用过程其实就是一个压栈的过程,在函数栈中,每个函数所占空间成为一个 栈帧。栈帧中保存着函数的形...

  • [c/c++]3.如何查看和更改程序运行栈的大小

    进程内存布局 我们写程序运行栈的栈帧保存在栈区,函数调用深度太多将导致爆栈栈的大小有上限,每个进程可以指定软上限,...

  • C 与汇编程序的约定调用

    1.说明 函数调用时通过栈帧来实现的,栈帧是指为一个单独的函数调用单独分配的那部分栈空间。当运行中的程序调用另一个...

  • 3.栈

    8086处理器push操作: 8086处理器pop操作: 如果是空栈 ,SS:SP指向的是栈空间最高地址单元的下一...

  • 函数调用中参数传递的内在机制

    函数调用,其执行过程如下:①在内存的栈空间中为其分配一个栈帧,用来存放该函数的形参和局部变量;②将实参的值复制给相...

网友评论

      本文标题:栈帧与函数调用流程(内存)---- 8086处理器

      本文链接:https://www.haomeiwen.com/subject/hoppnctx.html