
;--- prologue generation 
;--- first instruction after PROC contains a macro function!

	.386
	.model flat, stdcall
	option casemap :none

@prologue macro procname,flag,parmbyte,localbyte,reglist,userparms

	if flag
	  if parmbyte + localbyte
		push ebp
		movzx ebp,sp
	  endif
	  if localbyte
		add esp,-localbyte
	  endif
	endif
	for r,reglist
	   push r
	endm
		exitm %localbyte
endm

CStrX macro text
local x
	.const
x	db text,0
	.code
	exitm <offset x>
	endm

	.code

x1 proc a1:dword
	ret
x1 endp

	option prologue:@prologue

p1 proc uses ebx esi x:dword
	ret
p1 endp

p2 proc uses ebx esi x:dword
	invoke x1, CStrX("abc")
	ret
p2 endp

p3 proc uses ebx esi x:dword
	.if ( eax == 1 )
	.endif
	ret
p3 endp

	end
