Currently, I am confused of the calling convention and parameters passing in win64:
According to MSDN (
https://msdn.microsoft.com/en-us/library/zthk2dkh.aspx), win64 calling convention is to pass first 4 integer parameters into RCX, RDX, R8, and R9, first 4 floating point into XMM0 ~ XMM3. Others are needed to pushed onto stack.
How does ML64 handle this calling convention by using INVOKE? Does INVOKE macro passes parameters using above conventions? or it's the same as win32 to push all parameters onto stack? How about shadow stack?
If I only use pure assembly without macro, how shall I handle this by using CALL?
Thanks a lot.