| Аргументы | Направление передачи аргументов (стек) | Очищает стек | Возвращаемое значение |
|---|---|---|---|
| стек | справа налево | вызывающий | EAX |
Пример:
caller:
push c
push b
push a
call callee ; callee(a, b, c)
add esp, 12
mov ret, eax| Аргументы | Направление передачи аргументов (стек) | Очищает стек | Возвращаемое значение |
|---|---|---|---|
| стек | справа налево | вызываемый | EAX |
- стандартное соглашение для функций Windows API
Пример:
caller:
push c
push b
push a
call callee ; callee(a, b, c)
mov ret, eax| Аргументы | Направление передачи аргументов (стек) | Очищает стек | Возвращаемое значение |
|---|---|---|---|
| ECX, EDX, стек | справа налево | вызываемый | EAX |
Пример:
caller:
mov ecx, a
mov edx, b
push d
push c
call callee ; callee(a, b, c, d)
mov ret, eax| Аргументы | Направление передачи аргументов (стек) | Очищает стек | Возвращаемое значение |
|---|---|---|---|
| ECX, стек | справа налево | вызываемый | EAX |
- используется в C++ для методов; первым аргументом всегда является указатель на объект класса (this)
Пример:
caller:
mov ecx, this
push a
push b
call callee ; Class.callee(a, b)
mov ret, eax