我正在学习Windows上的x64汇编以获得“乐趣”。 MSDN documentation for the x64 calling convention on Windows说:
由于我的函数不是非原型(prototype)函数或varargs C/C++函数,这是否意味着我可以始终使用[rsp+8]
到[rsp+32]
(假设在调用后立即修改rsp
的未修改值)用于函数中的通用存储,例如局部变量?
最佳答案
是的,您可以出于任何目的使用入站参数暂存空间。但是您已经知道这一点:修改入站参数的合法性已经隐含了执行此操作的权限。
void somefunction(int arg1)
{
arg1 = anyvalue; // mov [rsp+8], anyvalue
}
关于assembly - 在Win64 ABI中,可以将保留的参数堆栈空间用于通用存储吗?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/7138347/