arm32
.macro invoke func:req, args:vararg
.ifnb \args
argc = 0
.irp param, \args
argc = argc + 1
.endr
argrc = argc
.rept argc
argrc = argrc - 1
argc = 0
.irp param, \args
.if argrc == argc
.if argrc == 0
mov r0, \param
.elseif argrc == 1
mov r1, \param
.elseif argrc == 2
mov r2, \param
.elseif argrc == 3
mov r3, \param
.else
mov r4, \param
push {r4}
.endif
.endif
argc = argc + 1
.endr
.endr
.endif
bl \func
.endm
.equ SDL_INIT_VIDEO, 0x20
.equ SDL_HWSURFACE, 0X01
.global main
.text
main:
push {lr}
invoke SDL_Init, $SDL_INIT_VIDEO
invoke SDL_SetVideoMode, $320, $240, $32, $SDL_HWSURFACE
invoke SDL_Quit
pop {pc}
x64
.macro invoke func:req, args:vararg
.ifnb \args
argc = 0
.irp param, \args
.if argc == 0
mov \param, %rdi
.elseif argc == 1
mov \param, %rsi
.elseif argc == 2
mov \param, %rdx
.elseif argc == 3
mov \param, %rcx
.elseif argc == 4
mov \param, %r8
.elseif argc == 5
mov \param, %r9
.else
push \prarm
.endif
argc = argc + 1
.endr
.endif
call \func
.endm
.equ SDL_INIT_VIDEO, 0x20
.equ SDL_HWSURFACE, 0X01
.global main
.text
main:
invoke SDL_Init, $SDL_INIT_VIDEO
invoke SDL_SetVideoMode, $320, $240, $32, $SDL_HWSURFACE
invoke SDL_Quit
ret