* register calling updates

This commit is contained in:
peter 2003-11-23 16:50:49 +00:00
parent 0646b94499
commit 23ae4449ec
3 changed files with 62 additions and 52 deletions

View File

@ -324,9 +324,9 @@ asm
movl %edi,saveedi
movl %esi,saveesi
{$ifdef REGCALL}
movl %eax,%edi
movl %edx,%esi
movl %ecx,%edx
movl set1,%esi
movl __RESULT,%edi
movl set2,%edx
{$else}
movl set1,%esi
movl set2,%edx
@ -365,9 +365,9 @@ asm
movl %edi,saveedi
movl %esi,saveesi
{$ifdef REGCALL}
movl %eax,%edi
movl %edx,%esi
movl %ecx,%edx
movl set1,%esi
movl __RESULT,%edi
movl set2,%edx
{$else}
movl set1,%esi
movl set2,%edx
@ -407,9 +407,9 @@ asm
movl %esi,saveesi
movl %ebx,saveebx
{$ifdef REGCALL}
movl %eax,%edi
movl %edx,%esi
movl %ecx,%edx
movl set1,%esi
movl __RESULT,%edi
movl set2,%edx
{$else}
movl set1,%esi
movl set2,%ebx
@ -451,9 +451,9 @@ asm
movl %edi,saveedi
movl %esi,saveesi
{$ifdef REGCALL}
movl %eax,%edi
movl %edx,%esi
movl %ecx,%edx
movl set1,%esi
movl __RESULT,%edi
movl set2,%edx
{$else}
movl set1,%esi
movl set2,%edx
@ -487,13 +487,8 @@ var
asm
movl %edi,saveedi
movl %esi,saveesi
{$ifdef REGCALL}
movl %eax,%esi
movl %edx,%edi
{$else}
movl set1,%esi
movl set2,%edi
{$endif}
movl $8,%ecx
.LMCOMPSETS1:
movl (%esi),%eax
@ -526,13 +521,8 @@ var
asm
movl %edi,saveedi
movl %esi,saveesi
{$ifdef REGCALL}
movl %eax,%esi
movl %edx,%edi
{$else}
movl set1,%esi
movl set2,%edi
{$endif}
movl $8,%ecx
.LMCONTAINSSETS1:
movl (%esi),%eax
@ -720,7 +710,10 @@ end;
{
$Log$
Revision 1.12 2003-11-11 21:08:17 peter
Revision 1.13 2003-11-23 16:50:49 peter
* register calling updates
Revision 1.12 2003/11/11 21:08:17 peter
* REGCALL define added
Revision 1.11 2003/09/08 18:21:37 peter

View File

@ -25,11 +25,11 @@ asm
movl %edi,saveedi
movl %esi,saveesi
{$ifdef REGCALL}
movl %eax,saveeax
movl %edx,%edi
{$else}
movl %eax,saveeax
movl %edx,%edi
{$else}
movl source,%edi
{$endif}
{$endif}
testl %edi,%edi
jz .LStrCopyDone
leal 3(%edi),%ecx
@ -37,10 +37,10 @@ asm
movl %edi,%esi
subl %edi,%ecx
{$ifdef REGCALL}
movl %eax,%edi
{$else}
movl %eax,%edi
{$else}
movl dest,%edi
{$endif}
{$endif}
jz .LStrCopyAligned
.LStrCopyAlignLoop:
movb (%esi),%al
@ -85,10 +85,10 @@ asm
movb %al,(%edi)
.LStrCopyDone:
{$ifdef REGCALL}
movl saveeax,%eax
{$else}
movl saveeax,%eax
{$else}
movl dest,%eax
{$endif}
{$endif}
movl saveedi,%edi
movl saveesi,%esi
end;
@ -102,13 +102,14 @@ asm
movl %edi,saveedi
movl %esi,saveesi
cld
movl dest,%esi
movl source,%edi
movl $0xffffffff,%ecx
xorl %eax,%eax
repne
scasb
not %ecx
movl dest,%edi
movl %esi,%edi
movl source,%esi
movl %ecx,%eax
shrl $2,%ecx
@ -118,11 +119,10 @@ asm
andl $3,%ecx
rep
movsb
movl dest,%eax
decl %edi
movl %edi,%eax
movl %edi,saveedi
movl %esi,saveesi
movl saveedi,%edi
movl saveesi,%esi
end;
@ -169,8 +169,8 @@ var
asm
movl %edi,saveedi
cld
xorl %eax,%eax
movl p,%edi
xorl %eax,%eax
orl %edi,%edi
jz .LStrEndNil
movl $0xffffffff,%ecx
@ -340,7 +340,9 @@ var
asm
movl %edi,saveedi
movl %esi,saveesi
{$ifndef REGCALL}
movl p,%eax
{$endif}
xorl %ecx,%ecx
testl %eax,%eax
jz .LSTRSCAN
@ -348,7 +350,7 @@ asm
movb c,%cl
leal 3(%eax),%esi
andl $-4,%esi
movl p,%edi
movl %eax,%edi
subl %eax,%esi
jz .LSTRSCANALIGNED
xorl %eax,%eax
@ -461,11 +463,12 @@ end;
{$define FPC_UNIT_HAS_STRRSCAN}
function strrscan(p : pchar;c : char) : pchar;assembler;
var
saveedi : longint;
saveeax,saveedi : longint;
asm
movl %edi,saveedi
xorl %eax,%eax
movl %eax,saveeax
movl p,%edi
xorl %eax,%eax
orl %edi,%edi
jz .LSTRRSCAN
movl $0xffffffff,%ecx
@ -475,7 +478,7 @@ asm
scasb
not %ecx
movb c,%al
movl p,%edi
movl saveeax,%edi
addl %ecx,%edi
decl %edi
std
@ -494,10 +497,14 @@ end;
{$define FPC_UNIT_HAS_STRUPPER}
function strupper(p : pchar) : pchar;assembler;
var
saveesi,saveedi : longint;
saveeax,saveesi,saveedi : longint;
asm
movl %edi,saveedi
movl %esi,saveesi
{$ifndef REGCALL}
movl p,%eax
{$endif}
movl %eax,saveeax
movl p,%esi
orl %esi,%esi
jz .LStrUpperNil
@ -514,7 +521,7 @@ asm
orb %al,%al
jnz .LSTRUPPER1
.LStrUpperNil:
movl p,%eax
movl saveeax,%eax
movl saveedi,%edi
movl saveesi,%esi
end;
@ -523,10 +530,14 @@ end;
{$define FPC_UNIT_HAS_STRLOWER}
function strlower(p : pchar) : pchar;assembler;
var
saveesi,saveedi : longint;
saveeax,saveesi,saveedi : longint;
asm
movl %esi,saveesi
movl %edi,saveedi
{$ifndef REGCALL}
movl p,%eax
{$endif}
movl %eax,saveeax
movl p,%esi
orl %esi,%esi
jz .LStrLowerNil
@ -543,14 +554,17 @@ asm
orb %al,%al
jnz .LSTRLOWER1
.LStrLowerNil:
movl p,%eax
movl saveeax,%eax
movl saveedi,%edi
movl saveesi,%esi
end;
{
$Log$
Revision 1.10 2003-11-11 21:08:17 peter
Revision 1.11 2003-11-23 16:50:49 peter
* register calling updates
Revision 1.10 2003/11/11 21:08:17 peter
* REGCALL define added
Revision 1.9 2003/09/08 18:21:37 peter

View File

@ -22,7 +22,7 @@ asm
{$ifdef regcall}
movl p,%esi
movl __RESULT,%edi
movl __RESULT,saveres
movl %edi,saveres
{$else}
movl p,%esi
{$endif}
@ -102,15 +102,18 @@ asm
{$endif}
addb $255,%cl
movb %cl,(%edi)
movl %esi,saveesi
movl %edi,saveedi
movl %ebx,saveebx
movl saveesi,%esi
movl saveedi,%edi
movl saveebx,%ebx
end;
{
$Log$
Revision 1.4 2003-11-19 16:58:44 peter
Revision 1.5 2003-11-23 16:50:49 peter
* register calling updates
Revision 1.4 2003/11/19 16:58:44 peter
* make strpas assembler function
Revision 1.3 2003/11/11 21:08:17 peter