Una función para cumplir con la Convención C debe:
- Preservar
RBX, R12, R13, R14 y R15
- Retornar el resultado en
RAX
oXMM0
- No romper la pila
Los parámetros se pasan (de izquierda a derecha) por los registros
- Si es entero o puntero se pasan respetando el orden usando:
RDI, RSI, RDX, RCX, R8 y R9
- Si es de tipo flotante se pasan en los
XMMs
Si no hay más registros disponibles se usa la pila, pero deberán quedar ordenados desde la dirección más baja a la más alta (se pushean de derecha a izquierda)
64-bit register | Lower 32 bits | Lower 16 bits | Lower 8 bits |
---|---|---|---|
rax | eax | ax | al |
rbx | ebx | bx | bl |
rcx | ecx | cx | cl |
rdx | edx | dx | dl |
rsi | esi | si | sil |
rdi | edi | di | dil |
rbp | ebp | bp | bpl |
rsp | esp | sp | spl |
r8 | r8d | r8w | r8b |
r9 | r9d | r9w | r9b |
r10 | r10d | r10w | r10b |
r11 | r11d | r11w | r11b |
r12 | r12d | r12w | r12b |
r13 | r13d | r13w | r13b |
r14 | r14d | r14w | r14b |
r15 | r15d | r15w | r15b |