作者:jfgkj6454_478 | 来源:互联网 | 2023-07-07 18:35
本文主要介绍关于堆栈的知识点,对【堆栈平衡】和【堆栈平衡模式】有兴趣的朋友可以看下由【Sculptor-L】投稿的技术文章,希望该技术和经验能帮到你解决你所遇的【】相关技术问题。堆栈平衡模式含义
本文主要介绍关于堆栈的知识点,对【堆栈平衡】和【堆栈平衡模式】有兴趣的朋友可以看下由【Sculptor-L】投稿的技术文章,希望该技术和经验能帮到你解决你所遇的【】相关技术问题。
堆栈平衡模式
含义 如果要返回父程序,则当我们在堆栈中进行操作时,一定要保证在RET这条指令执行之前,ESP指向的是我们压入堆栈的地址,也就是堆栈压入的值中途 可能发生变化,但是在函数执行完得和刚开始的保持一致。如果通过堆栈传入参数了,那么在函数执行完毕后,要平衡参数导致的堆栈变化。 外平栈与内平栈
外平栈:call 指令后add esp,8
内平栈:调用的函数最后ret 8
ESP(栈顶)寻址 EBP(栈底)寻址
EBP的地址相对固定,不会随着函数执行时对堆栈的操作而改变,可以通过EBP加一个值或减一个值来,ESP的值时不会改变
在push ebp的时候这时的堆栈断点位置就是ESP里的地址,堆栈断点在什么地址,ESP的值就为什么地址
ESP的值时不会改变,所以有了mov ebp,esp这一步为了把esp的地址存放起来,中途调用函数的时候esp的值会发生改变,为了堆栈平衡,所以最后要把esp地址放回去,让调用函数前esp和ebp的值保持一致。
本文《堆栈平衡》版权归Sculptor-L所有,引用堆栈平衡需遵循CC 4.0 BY-SA版权协议。