Subversion Repositories Kolibri OS

Compare Revisions

Regard whitespace Rev 6766 → Rev 6767

/programs/system/os/fpo.inc
16,9 → 16,13
parmbase@proc equ esp+4+loc+regcount*4
localbase@proc equ esp
fpo_localsize = loc
fpo_delta = 0
}
macro fpo_epilogue procname,flag,parmbytes,localbytes,reglist
{
if fpo_localsize
add esp, fpo_localsize
end if
irps reg, reglist \{ reverse pop reg \}
if flag and 10000b
retn
26,3 → 30,57
retn parmbytes
end if
}
macro deflocal@proc name,def,[val]
{
common
deflocal@proc name#_unique_suffix,def,val
all@vars equ all@vars,name
name equ name#_unique_suffix+fpo_delta
}
macro defargs@proc [arg]
{
common
rawargs equ
srcargs equ arg
forward
rawargs equ rawargs,arg#_unique_suffix
common
match =,tmp,rawargs \{
defargs@proc tmp
uniqargs equ args@proc
restore args@proc
args@proc equ uniqargs,srcargs
\}
forward
arg equ arg#_unique_suffix+fpo_delta
}
macro stdcall proc,[arg] ; directly call STDCALL procedure
{ common
fpo_delta_base = fpo_delta
if ~ arg eq
reverse
pushd arg
fpo_delta = fpo_delta + 4
common
end if
call proc
fpo_delta = fpo_delta_base
}
macro ccall proc,[arg] ; directly call CDECL procedure
{ common
fpo_delta_base = fpo_delta
size@ccall = 0
if ~ arg eq
reverse
pushd arg
fpo_delta = fpo_delta + 4
size@ccall = size@ccall+4
common
end if
call proc
if size@ccall
add esp, size@ccall
end if
fpo_delta = fpo_delta_base
}
fpo_delta = 0