Assembler output of string parameters without and with const (modify content)

Created by:blikblum

P$CONSTPARAMETERSTR_$$_BYVALUE$ANSISTRING:.globl P$CONSTPARAMETERSTR_$$_BYREFERENCE$ANSISTRING
P$CONSTPARAMETERSTR_$$_BYREFERENCE$ANSISTRING:
# Temps allocated between ebp-44 and ebp-4# Temps allocated between ebp-44 and ebp-4
# [16] begin# [24] begin
pushl %ebp pushl %ebp
movl %esp,%ebp movl %esp,%ebp
leal -44(%esp),%esp leal -44(%esp),%esp
# Var V located at ebp-4, size=OS_32 pushl %ebx
movl %eax,-4(%ebp)# Var V located in register ebx
call fpc_ansistr_incr_ref# Var S located at ebp-4, size=OS_32
movl %eax,%ebx
# [27] end;
movl $0,-4(%ebp)
movl $1,%eax movl $1,%eax
leal -40(%ebp),%edx leal -40(%ebp),%edx
leal -16(%ebp),%ecx leal -16(%ebp),%ecx
call fpc_pushexceptaddr call fpc_pushexceptaddr
call fpc_setjmp call fpc_setjmp
pushl %eax pushl %eax
testl %eax,%eax testl %eax,%eax
jne .Lj7 jne .Lj11
# [17] V := V + 'x';# [25] S := V + 'x';
pushl $0 pushl $0
movl -4(%ebp),%edx movl %ebx,%edx
leal -4(%ebp),%eax leal -4(%ebp),%eax
movl $.Ld1,%ecx movl $.Ld1,%ecx
call fpc_ansistr_concat call fpc_ansistr_concat
# [18] DoIt(V);# [26] DoIt(S);
movl -4(%ebp),%eax movl -4(%ebp),%eax
call P$CONSTPARAMETERSTR_$$_DOIT$ANSISTRING call P$CONSTPARAMETERSTR_$$_DOIT$ANSISTRING
.Lj7:.Lj11:
call fpc_popaddrstack call fpc_popaddrstack
# [19] end;
leal -4(%ebp),%eax leal -4(%ebp),%eax
call fpc_ansistr_decr_ref call fpc_ansistr_decr_ref
popl %eax popl %eax
testl %eax,%eax testl %eax,%eax
je .Lj8 je .Lj12
call fpc_reraise call fpc_reraise
.Lj8:.Lj12:
popl %ebx
movl %ebp,%esp movl %ebp,%esp
popl %ebp popl %ebp
ret ret
original text
changed text