Register welche nicht verändert werden dürfen (z.B. per PUSH/POP sichern):
ESP EBP EDI ESI EBX
Register:
8-Bit: AL(EAX), AH(EAX), BL(EBX), BH(EBX), CL(ECX), CH(ECX),
DL(EDX), DH(EDX)
16-Bit: AX(EAX), BX(EBX), CX(ECX), DX(EDX), SI(ESI), DI(EDI), BP(EBP),
IP(EIP), SP(ESP)
32-Bit: EAX, EBX, ECX, EDX, ESI, EDI, EBP, EIP, ESP
80-Bit: ST[0], ST[1], ST[2], ST[3], ST[4], ST[5], ST[6], ST[7]
64-Bit: MM0, MM1, MM2, MM3, MM4, MM5, MM6, MM7 // MMX-Register
weiterte: XMM0, XMM1, XMM2, XMM3, XMM4, XMM5, XMM6, XMM7, CR0, CR2, CR3, CR4, DR0, DR1, DR2, DR3, DR6, DR7
Parameterübergabe:
EAX EDX ECX PUSH(EBP + x) ... PUSH(EBP + 8) PUSH(EBP + 4) // Parameter1, Parameter2 ...
EAX PUSH(EBP + 4, EBP + 8) EDX // 64-Bit Werte werden immer gepuscht z.B. Parameter 1, 2, 3