.globl print_call
.globl print_ret

##########################################################

.data
cntr:		.long	0
outstr1:	.ascii	"rip = %lx, rsp = %lx, call counter = %d\n\0"
outstr2:	.ascii	"rip = %lx, rsp = %lx, ret  counter = %d\n\0"

##########################################################

.text

.type	print_call,@function
.type	print_ret,@function

##########################################################

print_call:

lea	-7(%rip),%rsi
mov	cntr,%ecx
inc	%ecx
mov	%ecx,cntr
mov	$outstr1,%rdi

jmp	print_reg

##########################################################

print_ret:

lea	-7(%rip),%rsi
mov	cntr,%ecx
decl	cntr
mov	$outstr2,%rdi

##########################################################

print_reg:

sub	$8,%rsp

mov	%rsp,%rdx
xor	%eax,%eax
call	printf

add	$8,%rsp
ret

##########################################################


