; 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