pushl“通过引用传递给堆栈”吗?

时间:2015-12-30 17:48:20

标签: assembly stack cpu-registers

我在Linux上使用GAS(AT& T语法),带有32位指令。

据我了解,在调用函数时,被调用者的第一个动作是复制%ebp中的值并将其置于堆栈顶部(并隐式地减少{{1}的值4,以便它指向这个新的堆栈“变量”)。这都是通过指令%esp完成的。

此时,pushl %ebp及其堆栈副本都存在垃圾。为了保留堆栈指针的当前位置以供以后参考,我们使用%ebp。现在movl %esp, %ebp的“堆栈副本”保存了此参考地址。

我的问题:%ebp本身现在也持有此地址吗?在C语言中,%ebp是通过引用或值传递给堆栈的?一般来说,修改寄存器或存储单元的“堆栈副本”是否会改变原始寄存器或存储单元中包含的值?

0 个答案:

没有答案