UbixOS  2.0
strcmp.S
Go to the documentation of this file.
1 /*-
2  * Copyright (c) 2002-2018 The UbixOS Project.
3  * All rights reserved.
4  *
5  * This was developed by Christopher W. Olsen for the UbixOS Project.
6  *
7  * Redistribution and use in source and binary forms, with or without modification, are permitted
8  * provided that the following conditions are met:
9  *
10  * 1) Redistributions of source code must retain the above copyright notice, this list of
11  * conditions, the following disclaimer and the list of authors.
12  * 2) Redistributions in binary form must reproduce the above copyright notice, this list of
13  * conditions, the following disclaimer and the list of authors in the documentation and/or
14  * other materials provided with the distribution.
15  * 3) Neither the name of the UbixOS Project nor the names of its contributors may be used to
16  * endorse or promote products derived from this software without specific prior written
17  * permission.
18  *
19  * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED
20  * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
21  * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS
22  * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
23  * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA,
24  * OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
25  * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
26  * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
27  */
28 
29  #include <i386/asmacros.h>
30 
31 ENTRY(strcmp)
32  movl 0x04(%esp),%eax
33  movl 0x08(%esp),%edx
34  jmp L2 /* Jump into the loop! */
35 
36  .align 2,0x90
37 L1: incl %eax
38  incl %edx
39 L2: movb (%eax),%cl
40  testb %cl,%cl
41  je L3
42  cmpb %cl,(%edx)
43  jne L3
44  incl %eax
45  incl %edx
46  movb (%eax),%cl
47  testb %cl,%cl
48  je L3
49  cmpb %cl,(%edx)
50  jne L3
51  incl %eax
52  incl %edx
53  movb (%eax),%cl
54  testb %cl,%cl
55  je L3
56  cmpb %cl,(%edx)
57  jne L3
58  incl %eax
59  incl %edx
60  movb (%eax),%cl
61  testb %cl,%cl
62  je L3
63  cmpb %cl,(%edx)
64  jne L3
65  incl %eax
66  incl %edx
67  movb (%eax),%cl
68  testb %cl,%cl
69  je L3
70  cmpb %cl,(%edx)
71  jne L3
72  incl %eax
73  incl %edx
74  movb (%eax),%cl
75  testb %cl,%cl
76  je L3
77  cmpb %cl,(%edx)
78  jne L3
79  incl %eax
80  incl %edx
81  movb (%eax),%cl
82  testb %cl,%cl
83  je L3
84  cmpb %cl,(%edx)
85  jne L3
86  incl %eax
87  incl %edx
88  movb (%eax),%cl
89  testb %cl,%cl
90  je L3
91  cmpb %cl,(%edx)
92  je L1
93  .align 2, 0x90
94 L3: movzbl (%eax),%eax /* unsigned comparison */
95  movzbl (%edx),%edx
96  subl %edx,%eax
97  ret
98 END(strcmp)