Arguments pushed on stack, right-to-left.
Caller-saved: eax, ecx, edx. All others are callee-saved.
Return value in eax.
General purpose registers:
- EAX (Accumulator)
- EBX (Base): pointer to data
- ECX (Counter): shift/rotate instructions and loops
- ESP (Stack Pointer)
- EBP (Stack Base Pointer)
- EDI (Destination Index)
- ESI (Source Index Register)
- EDX (Data): arithmetic and I/O
Like cdecl but first two arguments in ecx, edx
Arguments (callee-clobbered): eax, edx, ecx
Extra callee-clobbered: None
Callee-saved: ebx, edi, esi, ebp
Return: eax (, edx)
Arguments in order: rdi, rsi, rdx, rcx, r8, r9.
Callee saved: rbx, rsp, rbp, r12-r15 (if callee doesn't use these, nothing needs to be saved). All others are caller-saved.
Return value in rax.
Do whatever you want.