51 lines
873 B
PHP
51 lines
873 B
PHP
|
|
include '../../examples/x86/include/80386.inc'
|
|
|
|
macro format?.MachO? variant
|
|
match , variant
|
|
MachO.Settings.FileType equ MH_OBJECT
|
|
include '../../examples/x86/include/format/macho.inc'
|
|
use32
|
|
else match =executable?, variant
|
|
MachO.Settings.BaseAddress = 0x1000
|
|
include '../../examples/x86/include/format/macho.inc'
|
|
use32
|
|
else
|
|
err 'invalid argument'
|
|
end match
|
|
end macro
|
|
|
|
macro struct? name
|
|
macro ends?!
|
|
end namespace
|
|
esc end struc
|
|
virtual at 0
|
|
name name
|
|
sizeof.name = $
|
|
end virtual
|
|
purge ends?
|
|
end macro
|
|
esc struc name
|
|
label . : sizeof.name
|
|
namespace .
|
|
end macro
|
|
|
|
macro ccall? proc*,args&
|
|
local size
|
|
mov ebp,esp
|
|
sub esp,size
|
|
and esp,0FFFFFFF0h
|
|
match any, args
|
|
iterate arg, args
|
|
mov dword [esp+(%-1)*4],arg
|
|
if % = 1
|
|
size := %%*4
|
|
end if
|
|
end iterate
|
|
else
|
|
size := 0
|
|
end match
|
|
call proc
|
|
mov esp,ebp
|
|
end macro
|