mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-08-12 17:29:10 +02:00
+Added checking for nil on most functions.
This commit is contained in:
parent
66bb181cf5
commit
7e68180e14
@ -21,6 +21,8 @@ function strcopy(dest,source : pchar) : pchar;assembler;
|
|||||||
asm
|
asm
|
||||||
cld
|
cld
|
||||||
movl source,%edi
|
movl source,%edi
|
||||||
|
orl %edi,%edi
|
||||||
|
jz .LStrCopyNil
|
||||||
movl $0xffffffff,%ecx
|
movl $0xffffffff,%ecx
|
||||||
xorb %al,%al
|
xorb %al,%al
|
||||||
repne
|
repne
|
||||||
@ -36,6 +38,7 @@ asm
|
|||||||
andl $3,%ecx
|
andl $3,%ecx
|
||||||
rep
|
rep
|
||||||
movsb
|
movsb
|
||||||
|
.LStrCopyNil:
|
||||||
movl dest,%eax
|
movl dest,%eax
|
||||||
end;
|
end;
|
||||||
|
|
||||||
@ -90,26 +93,33 @@ end ['EAX','ECX','ESI','EDI'];
|
|||||||
function strlen(p : pchar) : longint;assembler;
|
function strlen(p : pchar) : longint;assembler;
|
||||||
asm
|
asm
|
||||||
cld
|
cld
|
||||||
movl p,%edi
|
|
||||||
movl $0xffffffff,%ecx
|
|
||||||
xorl %eax,%eax
|
xorl %eax,%eax
|
||||||
|
movl p,%edi
|
||||||
|
orl %edi,%edi
|
||||||
|
jz .LNil
|
||||||
|
movl $0xffffffff,%ecx
|
||||||
repne
|
repne
|
||||||
scasb
|
scasb
|
||||||
movl $0xfffffffe,%eax
|
movl $0xfffffffe,%eax
|
||||||
subl %ecx,%eax
|
subl %ecx,%eax
|
||||||
|
.LNil:
|
||||||
end ['EDI','ECX','EAX'];
|
end ['EDI','ECX','EAX'];
|
||||||
|
|
||||||
|
|
||||||
function strend(p : pchar) : pchar;assembler;
|
function strend(p : pchar) : pchar;assembler;
|
||||||
asm
|
asm
|
||||||
cld
|
cld
|
||||||
|
xorl %eax,%eax
|
||||||
movl p,%edi
|
movl p,%edi
|
||||||
|
orl %edi,%edi
|
||||||
|
jz .LStrEndNil
|
||||||
movl $0xffffffff,%ecx
|
movl $0xffffffff,%ecx
|
||||||
xorl %eax,%eax
|
xorl %eax,%eax
|
||||||
repne
|
repne
|
||||||
scasb
|
scasb
|
||||||
movl %edi,%eax
|
movl %edi,%eax
|
||||||
decl %eax
|
decl %eax
|
||||||
|
.LStrEndNil:
|
||||||
end ['EDI','ECX','EAX'];
|
end ['EDI','ECX','EAX'];
|
||||||
|
|
||||||
|
|
||||||
@ -231,10 +241,12 @@ end ['EAX','ECX','ESI','EDI'];
|
|||||||
|
|
||||||
function strscan(p : pchar;c : char) : pchar;assembler;
|
function strscan(p : pchar;c : char) : pchar;assembler;
|
||||||
asm
|
asm
|
||||||
|
xorl %eax,%eax
|
||||||
movl p,%edi
|
movl p,%edi
|
||||||
|
orl %edi,%edi
|
||||||
|
jz .LSTRSCAN
|
||||||
movl $0xffffffff,%ecx
|
movl $0xffffffff,%ecx
|
||||||
cld
|
cld
|
||||||
xorb %al,%al
|
|
||||||
repne
|
repne
|
||||||
scasb
|
scasb
|
||||||
not %ecx
|
not %ecx
|
||||||
@ -252,7 +264,10 @@ end;
|
|||||||
|
|
||||||
function strrscan(p : pchar;c : char) : pchar;assembler;
|
function strrscan(p : pchar;c : char) : pchar;assembler;
|
||||||
asm
|
asm
|
||||||
|
xorl %eax,%eax
|
||||||
movl p,%edi
|
movl p,%edi
|
||||||
|
orl %edi,%edi
|
||||||
|
jz .LSTRRSCAN
|
||||||
movl $0xffffffff,%ecx
|
movl $0xffffffff,%ecx
|
||||||
cld
|
cld
|
||||||
xorb %al,%al
|
xorb %al,%al
|
||||||
@ -278,6 +293,8 @@ end;
|
|||||||
function strupper(p : pchar) : pchar;assembler;
|
function strupper(p : pchar) : pchar;assembler;
|
||||||
asm
|
asm
|
||||||
movl p,%esi
|
movl p,%esi
|
||||||
|
orl %esi,%esi
|
||||||
|
jz .LStrUpperNil
|
||||||
movl %esi,%edi
|
movl %esi,%edi
|
||||||
.LSTRUPPER1:
|
.LSTRUPPER1:
|
||||||
lodsb
|
lodsb
|
||||||
@ -290,6 +307,7 @@ asm
|
|||||||
stosb
|
stosb
|
||||||
orb %al,%al
|
orb %al,%al
|
||||||
jnz .LSTRUPPER1
|
jnz .LSTRUPPER1
|
||||||
|
.LStrUpperNil:
|
||||||
movl p,%eax
|
movl p,%eax
|
||||||
end;
|
end;
|
||||||
|
|
||||||
@ -297,6 +315,8 @@ end;
|
|||||||
function strlower(p : pchar) : pchar;assembler;
|
function strlower(p : pchar) : pchar;assembler;
|
||||||
asm
|
asm
|
||||||
movl p,%esi
|
movl p,%esi
|
||||||
|
orl %esi,%esi
|
||||||
|
jz .LStrLowerNil
|
||||||
movl %esi,%edi
|
movl %esi,%edi
|
||||||
.LSTRLOWER1:
|
.LSTRLOWER1:
|
||||||
lodsb
|
lodsb
|
||||||
@ -309,12 +329,16 @@ asm
|
|||||||
stosb
|
stosb
|
||||||
orb %al,%al
|
orb %al,%al
|
||||||
jnz .LSTRLOWER1
|
jnz .LSTRLOWER1
|
||||||
|
.LStrLowerNil:
|
||||||
movl p,%eax
|
movl p,%eax
|
||||||
end;
|
end;
|
||||||
|
|
||||||
{
|
{
|
||||||
$Log$
|
$Log$
|
||||||
Revision 1.3 1999-03-30 16:58:49 peter
|
Revision 1.4 1999-04-09 07:58:41 michael
|
||||||
|
+Added checking for nil on most functions.
|
||||||
|
|
||||||
|
Revision 1.3 1999/03/30 16:58:49 peter
|
||||||
* use assembler and remove all rets
|
* use assembler and remove all rets
|
||||||
|
|
||||||
Revision 1.2 1999/02/25 10:07:01 michael
|
Revision 1.2 1999/02/25 10:07:01 michael
|
||||||
|
Loading…
Reference in New Issue
Block a user