【发布时间】:2012-06-24 06:46:50
【问题描述】:
我正在使用gcc -S 来了解内存和堆栈的工作原理。在这些戏剧中,我发现了一些我不清楚的事情。你能帮我理解一下原因吗?
当调用函数为被调用函数设置参数时,它使用
mov到esp而不是push。不使用push有什么好处?使用位于堆栈的参数的函数将它们指向为
ebp + (N + offset)(其中 N 是为返回地址保留的大小)。我希望看到更容易理解的esp - offset。到处使用ebp作为基本点的原因是什么?我知道这些是平等的,但无论如何?-
main开头的这个魔法有什么用?为什么esp只能这样初始化?and esp,0xfffffff0
谢谢,
【问题讨论】:
-
这可能是 3 个独立的问题。无论如何,第三点的答案是堆栈对齐。