summaryrefslogtreecommitdiff
path: root/strings/ptr_cmp.asm
diff options
context:
space:
mode:
Diffstat (limited to 'strings/ptr_cmp.asm')
-rw-r--r--strings/ptr_cmp.asm180
1 files changed, 0 insertions, 180 deletions
diff --git a/strings/ptr_cmp.asm b/strings/ptr_cmp.asm
deleted file mode 100644
index b2a020d8a37..00000000000
--- a/strings/ptr_cmp.asm
+++ /dev/null
@@ -1,180 +0,0 @@
-; Copyright (C) 2000 MySQL AB
-;
-; This library is free software; you can redistribute it and/or
-; modify it under the terms of the GNU Library General Public
-; License as published by the Free Software Foundation; version 2
-; of the License.
-;
-; This library is distributed in the hope that it will be useful,
-; but WITHOUT ANY WARRANTY; without even the implied warranty of
-; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-; Library General Public License for more details.
-;
-; You should have received a copy of the GNU Library General Public
-; License along with this library; if not, write to the Free
-; Software Foundation, Inc., 59 Temple Place - Suite 330, Boston,
-; MA 02111-1307, USA
-
- TITLE Optimized cmp of pointer to strings of unsigned chars
-
-ifndef M_I386
- .8087
- DOSSEG
- .MODEL LARGE
- .DATA
-compare_length dw 0
- .CODE STRINGS
-
- PUBLIC _get_ptr_compare
-_get_ptr_compare PROC
- mov bx,sp
- mov cx,ss:[BX+4]
- mov compare_length,cx
- mov dx,seg strings:_ptr_cmp
- mov ax,offset _ptr_cmp_0
- jcxz @F
- mov ax,offset _ptr_cmp_1
- dec cx
- jz @F
- mov ax,offset _ptr_cmp
-@@: ret
-_get_ptr_compare ENDP
-
-_ptr_cmp_0 PROC
- mov AX,0 ; Emptyt strings are always equal
- ret
-_ptr_cmp_0 ENDP
-
-
-_ptr_cmp_1 PROC
- mov bx,sp
- mov dx,si ; Save si and ds
- mov cx,ds
- lds si,DWORD PTR ss:[bx+4] ; s1
- lds si,DWORD PTR ds:[si]
- mov al,ds:[si]
- xor ah,ah
- lds si,DWORD PTR ss:[bx+8] ; s2
- lds si,DWORD PTR ds:[si]
- mov bl,ds:[si]
- mov bh,ah
- sub ax,bx
- mov ds,cx ; restore si and ds
- mov si,dx
- ret
-_ptr_cmp_1 ENDP
-
-_ptr_cmp PROC
- mov bx,bp ; Save bp
- mov dx,di ; Save di
- mov bp,sp
- push ds
- push si
- mov cx,compare_length ; Length of memory-area
- lds si,DWORD PTR [bp+4] ; s1
- lds si,DWORD PTR ds:[si]
- les di,DWORD PTR [bp+8] ; s2
- les di,DWORD PTR es:[di]
-; cld ; Work uppward
- xor ax,ax
- repe cmpsb ; Compare strings
- je @F ; Strings are equal
- sbb ax,ax
- cmc
- adc ax,0
-
-@@: pop si
- pop ds
- mov di,dx
- mov bp,bx
- ret
-_ptr_cmp ENDP
-
-else
-
-include macros.asm
-
-fix_es MACRO fix_cld ; Load ES if neaded
- ife ESeqDS
- mov ax,ds
- mov es,ax
- endif
- ifnb <fix_cld>
- cld
- endif
- ENDM
-
- begdata
-compare_length dd 0 ; Length of strings
- enddata
-
- begcode get_ptr_compare
- public _get_ptr_compare
-_get_ptr_compare proc near
- mov ecx,P-SIZEPTR[esp]
- mov compare_length,ecx
- mov eax,offset _TEXT:_ptr_cmp_0
- jecxz @F
- mov eax,offset _TEXT:_ptr_cmp_1
- dec ecx
- jz @F
- mov eax,offset _TEXT:_ptr_cmp
-@@: ret
-_get_ptr_compare endp
- endcode _get_ptr_compare
-
-
- begcode ptr_cmp_0
-_ptr_cmp_0 PROC
- mov EAX,0 ; Emptyt strings are always equal
- ret
-_ptr_cmp_0 ENDP
- endcode ptr_cmp_0
-
-
- begcode ptr_cmp_1
-_ptr_cmp_1 proc near
- mov edx,esi ; Save esi
- mov esi,P-SIZEPTR[esp] ; *s1
- mov esi,[esi]
- movzx eax,[esi]
- mov esi,P[esp] ; *s2
- mov esi,[esi]
- movzx ecx,[esi]
- sub eax,ecx
- mov esi,edx ; Restore esi
- ret
-_ptr_cmp_1 ENDP
- endcode ptr_cmp_1
-
-
- begcode ptr_cmp
-_ptr_cmp proc near
- fix_es 1
- push ebp
- mov ebp,esp
- mov edx,edi ; Save esi
- push esi
- mov esi,P[ebp] ; *s1
- mov esi,[esi]
- mov edi,P+SIZEPTR[ebp] ; *s2
- mov edi,[edi]
- mov ecx,compare_length ; Length of memory-area
- xor eax,eax
- repe cmpsb ; Compare strings
- je @F ; Strings are equal
-
- sbb eax,eax
- cmc
- adc eax,0
-
-@@: pop esi
- mov edi,edx
- pop ebp
- ret
-_ptr_cmp ENDP
- endcode ptr_cmp
-
-endif
-
- END