我一直在阅读 x86 堆栈和 CDECL 约定,并阅读了一些让我感到困惑的东西。
列出的调用者的职责包括弹出参数、使用它们或简单地增加 %esp 以删除它们。
最后一部分是如何工作的?
例如,假设 %esp 的初始值为 0x105000,并且您将当前堆栈帧的值减少 $0x1c。您分配了一些数据,然后将其递增回来 - 在这种情况下,这些数据不会仍然在内存中浮动吗?内存是怎么清除的?访问 0x104FF4 会导致分段错误,如果是,是什么清除了那里的数据?
我一直在阅读 x86 堆栈和 CDECL 约定,并阅读了一些让我感到困惑的东西。
列出的调用者的职责包括弹出参数、使用它们或简单地增加 %esp 以删除它们。
最后一部分是如何工作的?
例如,假设 %esp 的初始值为 0x105000,并且您将当前堆栈帧的值减少 $0x1c。您分配了一些数据,然后将其递增回来 - 在这种情况下,这些数据不会仍然在内存中浮动吗?内存是怎么清除的?访问 0x104FF4 会导致分段错误,如果是,是什么清除了那里的数据?