On 4/21/08, Ross Ridge <[EMAIL PROTECTED]> wrote: > H.J. Lu writes: > >Are r10-r15 callee-saved in w64ABI? > > Here's what Microsoft's documentation says: > > Caller/Callee Saved Registers > > The registers RAX, RCX, RDX, R8, R9, R10, R11 are considered > volatile and must be considered destroyed on function calls > (unless otherwise safety-provable by analysis such as whole > program optimization). > > The registers RBX, RBP, RDI, RSI, R12, R13, R14, and R15 are > considered nonvolatile and must be saved and restored by a > function that uses them > > Other parts of the documentation state that XMM0-XMM5 are volatile > (caller-saved), while XMM6-XXM15 are non-volatile (callee-saved). > > Ross Ridge > >
Maybe this link is helpful: http://msdn2.microsoft.com/en-us/library/9z1stfyw.aspx Register Usage The x64 architecture provides for 16 general-purpose registers (hereafter referred to as integer registers) as well as 16 XMM registers available for floating-point use. Volatile registers are scratch registers presumed by the caller to be destroyed across a call. Nonvolatile registers are required to retain their values across a function call and must be saved by the callee if used. The following table describes how each register is used across function calls: Register Status Use RAX Volatile Return value register RCX Volatile First integer argument RDX Volatile Second integer argument R8 Volatile Third integer argument R9 Volatile Fourth integer argument R10:R11 Volatile Must be preserved as needed by caller; used in syscall/sysret instructions R12:R15 Nonvolatile Must be preserved by callee RDI Nonvolatile Must be preserved by callee RSI Nonvolatile Must be preserved by callee RBX Nonvolatile Must be preserved by callee RBP Nonvolatile May be used as a frame pointer; must be preserved by callee RSP Nonvolatile Stack pointer XMM0 Volatile First FP argument XMM1 Volatile Second FP argument XMM2 Volatile Third FP argument XMM3 Volatile Fourth FP argument XMM4:XMM5 Volatile Must be preserved as needed by caller XMM6:XMM15 Nonvolatile Must be preserved as needed by callee.