ESP 定律原理知道吗

ESP 定律的原理

ESP 定律的核心思想是:在正常的函数调用和返回过程中,栈指针(ESP 在 32 位系统,RSP 在 64 位系统)在进入函数时和离开函数时是相等的

或者更准确地说,call 指令在将返回地址压入栈后,会将 ESP 减小。当函数返回(通过 ret 指令)时,ret 指令会弹出返回地址,并自动调整 ESP,使其回到 call 指令执行之前的状态

ESP 定律的两个核心结论:

  1. 在函数内部,只要没有发生新的函数调用或异常,pushpop 指令的操作是对称的。也就是说,每一个 push 都有一个对应的 pop,所以 ESP 的最终变化是零
  2. 在函数返回时,ret 指令会正确地将控制权返回给调用方,其前提是函数执行完毕时 ESP 寄存器的值正好指向 call 指令压入的返回地址

如果一个函数在返回时,ESP 的值不是返回地址,那么 ret 指令会从一个错误的位置取地址,导致程序崩溃或跳转到不可预知的地址

Copyright © 版权信息 all right reserved,powered by Gitbook该文件修订时间: 2025-09-25 03:13:05

results matching ""

    No results matching ""