53 lines
550 B
Plaintext
53 lines
550 B
Plaintext
|
; NASM macro set to make interfacing to 32-bit programs easier -*- nasm -*-
|
||
|
|
||
|
|
||
|
|
||
|
%imacro proc 1 ; begin a procedure definition
|
||
|
|
||
|
%push proc
|
||
|
|
||
|
global %1
|
||
|
|
||
|
%1: push ebp
|
||
|
|
||
|
mov ebp,esp
|
||
|
|
||
|
%assign %$arg 8
|
||
|
|
||
|
%define %$procname %1
|
||
|
|
||
|
%endmacro
|
||
|
|
||
|
|
||
|
|
||
|
%imacro arg 0-1 4 ; used with the argument name as a label
|
||
|
|
||
|
%00 equ %$arg
|
||
|
|
||
|
%assign %$arg %1+%$arg
|
||
|
|
||
|
%endmacro
|
||
|
|
||
|
|
||
|
|
||
|
%imacro endproc 0
|
||
|
|
||
|
%ifnctx proc
|
||
|
|
||
|
%error Mismatched `endproc'/`proc'
|
||
|
|
||
|
%else
|
||
|
|
||
|
leave
|
||
|
|
||
|
ret
|
||
|
|
||
|
__end_%$procname: ; useful for calculating function size
|
||
|
|
||
|
%pop
|
||
|
|
||
|
%endif
|
||
|
|
||
|
%endmacro
|
||
|
|