【发布时间】:2014-01-10 06:43:14
【问题描述】:
如果我这样设置堆栈
push rbp;
mov rbp, rsp;
sub rsp, 64;
我需要吗
mov rsp, rbp;
pop rbp;
ret 64;
或只有
mov rsp, rbp;
pop rbp;
ret;
?
【问题讨论】:
-
第一个(带有
ret 64)正在释放调用者设置的堆栈空间。这就是stdcall摆脱堆栈上的参数的方式。但在这里它只会破坏一些东西。 -
@harold 如何在不破坏堆栈参数的情况下保留一些空间?
-
@harold 或者更好的问题是:我可以放心地使用 [rbp - from-8-to-64] 吗?
-
通常是的,除非你写的东西当然大于 8 个字节
-
那不是64字节的保留栈吗?还是它的 64 位?
标签: assembly x86-64 stack-pointer