Tri*_*ian 7 64-bit assembly win64 abi calling-convention
我正在Windows上学习x64汇编以获得"有趣".Windows上x64调用约定的MSDN文档说:
调用者负责为被调用者分配参数空间,并且必须始终为4个寄存器参数分配足够的空间,即使被调用者没有那么多参数也是如此.这有助于简化支持C非原型函数和vararg C/C++函数.
由于我的功能是不是C unprototyped函数或可变参数的C/C++函数,这是否意味着我可以一直使用[rsp+8]到[rsp+32](假设未修改的价值rsp我的函数中调用后右)通用存储,如为局部变量?
是的,您可以出于任何目的使用入站参数暂存空间.但是你已经知道了这一点:修改入站参数的合法性已经暗示了这样做的许可.
void somefunction(int arg1)
{
arg1 = anyvalue; // mov [rsp+8], anyvalue
}
Run Code Online (Sandbox Code Playgroud)