24 lines
422 B
PHP
24 lines
422 B
PHP
|
|
||
|
; Adapted and tested by Jacob Young (jacobly.alt@gmail.com)
|
||
|
|
||
|
iterate reg, rdi, rsi, rdx, rcx, r8, r9
|
||
|
arguments.%? equ reg
|
||
|
end iterate
|
||
|
|
||
|
macro ccall? proc*,args&
|
||
|
local size
|
||
|
mov rbp,rsp
|
||
|
and rsp,0FFFFFFFFFFFFFFF0h
|
||
|
match any, args
|
||
|
iterate arg, args
|
||
|
if sizeof (arg)
|
||
|
lea arguments.%,[arg]
|
||
|
else if ~ arg eq arguments.%
|
||
|
mov arguments.%,arg
|
||
|
end if
|
||
|
end iterate
|
||
|
end match
|
||
|
call proc
|
||
|
mov rsp,rbp
|
||
|
end macro
|