asm_dip/toolchain/fasmg.kl0e/source/macos/x64/selfhost.inc
2024-11-24 23:13:28 -05:00

42 lines
907 B
PHP

; Adapted and tested by Jacob Young (jacobly.alt@gmail.com)
include '../../linux/x64/selfhost.inc'
macro format?.MachO64? variant
match , variant
MachO.Settings.ProcessorType = CPU_TYPE_X86_64
MachO.Settings.FileType equ MH_OBJECT
include '../../../examples/x86/include/format/macho.inc'
use64
else match =executable?, variant
MachO.Settings.ProcessorType = CPU_TYPE_X86_64
MachO.Settings.BaseAddress = 0x1000
include '../../../examples/x86/include/format/macho.inc'
use64
else
err 'invalid argument'
end match
end macro
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