博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
在函数调用的时候的压栈工作
阅读量:4108 次
发布时间:2019-05-25

本文共 328 字,大约阅读时间需要 1 分钟。

在函数调用发生的时候,需要在栈中做一系列的压栈工作,确保调用方的信息能够安全的保存,被调用函数的参数能够正确地传入。这里,需要做的工作如下:

1  压入被调用方的函数参数。

2 压栈返回地址,确保函数调用结束后能够正确的执行剩余代码。

3 保存栈底,更改占栈底和栈顶。  esp寄存器是栈顶,ebp寄存器是栈底。

     具体操作: push ebp   将esp寄存器压栈,保存上个函数的栈底。

                          mov ebp  esp 将栈顶内容存入栈底,发生一次新的调用时 原来的栈顶变成了栈顶。

                          sub   esp  x   将栈顶向上移动。

4  压栈寄存器内内容 保存寄存器。

其中  第3 4 步是在被调函数的函数头进行执行的。

具体参考: 《程序员的自我修养》第10.2.1节  p288。

转载地址:http://kutsi.baihongyu.com/

你可能感兴趣的文章
SIM300 AT指令集
查看>>
lwIP移植工作
查看>>
USB 协议简介
查看>>
USB入门系列之一----基础知识
查看>>
USB入门系列之二-----USB的连接模型
查看>>
USB入门系列之三-----USB的电气特性
查看>>
USB入门系列之四 —— USB的线缆以及插头、插座【转】
查看>>
USB入门系列之五 —— USB设备的插入检测机制
查看>>
USB入门系列之六 —— USB设备的枚举过程
查看>>
USB入门系列之七 —— USB的描述符及各种描述符之间的依赖关系【转】
查看>>
LwIP移植心得[转]
查看>>
LWIP ethernetif.c分析
查看>>
wireshark报The capture session could not be initiated 错误
查看>>
MDK中加载指定文件的技巧
查看>>
stm32 堆和栈(stm32 Heap & Stack)【worldsing笔记】
查看>>
STM32 keil mdk启动代码发分析 .
查看>>
解析 STM32 的启动过程(写的不错)
查看>>
应用层和传输层的关系
查看>>
802.11协议用到的简写
查看>>
802.11 学习笔记
查看>>