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

Created Diff never expires
13 removals
39 lines
18 additions
43 lines
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