1) it is intended for register spill. Nothing is stored there automatically. It avoids repeated push and pop sequences to save and restore the fastcall registers. If rcx and rdx are used as parameters, for example, and the compiler wants to use them for scratch registers, then they can be stored there.
2) your () in (3) contradicts your claim here.
3) your () here makes my point for me. It might not be there.
4) It is fixed. The first four parameters are in registers, and their space is reserved by the callee. The other parameters are pushed onto the stack by the caller. That's not home space anymore, that's regular stack calling convention.
|