我正在玩弄gcc -S以了解内存和堆栈的工作原理。在这些戏剧中,我发现了一些我不清楚的事情。你能帮我理解原因吗?
当调用函数为被调用的函数设置参数时,它
mov会esp改为使用push. 不使用有什么好处push?使用位于堆栈的参数的函数将它们指向为
ebp + (N + offset)(其中 N 是为返回地址保留的大小)。我希望看看esp - offset哪个更容易理解。ebp无处不在的作为基点的理由是什么?我知道这些是平等的,但无论如何?这个魔法在开头有什么用
main?为什么esp必须以这种方式初始化?and esp,0xfffffff0
谢谢,