參考資訊:
https://github.com/ObjAsm
https://objasm.x10host.com/index.htm
main.asm
%include @Environ(OBJASM_PATH)/Code/Macros/Model.inc
SysSetup OOP, WIN32, ANSI_STRING
MakeObjects Primer
.const
Object MyApp, , Primer
RedefineMethod Init
ObjectEnd
.code
Method MyApp.Init, uses esi
SetObject esi
invoke MessageBox, NULL, $OfsCStr("Hello, world!"), $OfsCStr("main"), MB_OK
MethodEnd
start proc
SysInit
OCall $ObjTmpl(MyApp)::MyApp.Init
OCall $ObjTmpl(MyApp)::MyApp.Done
SysDone
invoke ExitProcess, 0
start endp
end
Makefile
export OBJASM_PATH=/opt/wadk/objasm_linux
TARGET = main
MYWINE = WINEPREFIX=~/.wine_x86 box86 wine
CFLAGS = -coff
LDFLAGS = -lgdi32
LDFLAGS += -luser32
LDFLAGS += -ladvapi32
LDFLAGS += -lkernel32
LDFLAGS += -e _start@0
all:
uasm ${CFLAGS} ${TARGET}.s
i686-w64-mingw32-ld ${TARGET}.o -o ${TARGET}.exe ${LDFLAGS}
run:
${MYWINE} ${TARGET}.exe
clean:
rm -rf ${TARGET}.exe ${TARGET}.o
編譯、執行
$ make $ make run