我最近一直在阅读调用堆栈。然而,我一直在阅读的所有示例和文章都是单线程的。我对调用堆栈在内存中的样子以及我们如何分析它很感兴趣。
很抱歉在一篇文章中包含这么多问题。但是,当每个问题都相关时,为每个问题创建一个帖子似乎很麻烦。
我的问题是针对 Windows x86 的。所以我遇到困难的问题是:
进程中的每个线程是否总是有一个调用堆栈?即,线程不共享调用堆栈?
每个调用堆栈的大小是否固定?或者每个线程可以不同吗?
让我们假设我们自己做所有事情并用汇编编写我们的程序。调用栈是不是神奇地给了我们?还是我们必须自己实施?
如果我们在汇编中编写程序,我们是否会保留一些内存并将调用堆栈内存起始地址设置为 ESP 以进行设置?
-迈克尔