typ funkce můžete přidat úpravou (klíč Y) a přidáním názvu.
Napsal jsem stránku, která mi připomene konvence volání na úrovni ASM.
Úvod
původní hovor je myfunc(0,1,2,3,4)
.
- standardní objednávka is first argument is push last.
- standardní úprava zásobníku je ' vyčištění volaného ' - po návratu by zásobník měl být bez svých volacích argumentů.
Poznámka : zásobník vypadá svisle jako objednávka volání.
stdcall (pouze zásobník)
push 4push 3push 2push 1push 0call myfuncxor eax, eaxretn 10
Fastcall (ecx, edx)
Toto je ve skutečnosti rychlé volání společnosti Microsoft.
push 4push 3push 2mov edx, 1xor ecx, ecxcall myfuncxor eax, eaxretn 10
CDECL & syscall (vyčištění volajícího)
push 4push 3push 2push 1push 0call myfuncadd esp, 014xor eax, eaxretn 10
Pascal (obrácené pořadí, ebx uloženo, i když ebx není použit ...)
push ebxpush 0push 1push 2push 3push 4call myfuncxor eax, eaxpop ebxretn 10
Fortran / watcall (eax, edx, ebx, ecx, pak stack - ebx je uložen)
Zřejmě to není tak jasné, jaká je konvence volání Fortran, a tato se dokonce liší od Raymondova příspěvku The __fo konvence volání rtran
není konvence volání používaná FORTRANEM.
push ebxpush 4mov ecx, 3mov ebx, 2mov edx, 1xor eax, eaxcall myfuncxor eax, eaxpop ebxretn 10
Delphi 'registruje' konvenci volání (výchozí)
Používá eax
, ecx
, edx kód> jako první 3 argumenty. Další argumenty jsou do zásobníku vloženy v opačném pořadí.
push 3push 4mov ecx, 2mov edx, 1xor eax, eaxcall myfuncxor eax, eaxretn 10