【发布时间】:2021-01-05 22:39:52
【问题描述】:
堆栈在使用前是否需要“清除”?换句话说,在使用堆栈之前,是否可以安全地假设它完全为零,或者它是垃圾并且它可以是任何东西?例如,假设我将一个三字节值 AA AA AA 移动到 %rbp-4:
---------------------- %rsp / %rbp
---------------------- -1
AA
---------------------- -2
AA
---------------------- -3
AA
---------------------- -4
如果我将四个字节移动到一个寄存器中,例如:
movl -4(%rbp), %eax
我首先需要清除堆栈上的一个未使用字节,还是我们确定堆栈已经被清除?
【问题讨论】:
标签: assembly x86 stack callstack