|
|
1.1 root 1: //////////
2: / libc/string/i386/streq.s
3: / i386 C string library.
4: / Not in ANSI C standard.
5: //////////
6:
7: //////////
8: / int
9: / streq(char *String1, char *String2)
10: /
11: / Compare String1 and String2 for equality, return 1 or 0.
12: //////////
13:
14: String1 .equ 12
15: String2 .equ String1+4
16:
17: .globl streq
18:
19: streq:
20: push %esi
21: push %edi
22:
23: movl %esi, String2(%esp) / String2 address to ESI
24: movl %edi, String1(%esp) / String1 address to EDI
25: subl %ecx, %ecx / Result to ECX
26: cld
27:
28: ?loop:
29: lodsb / String2 character to AL
30: scasb / Compare to String1 character
31: jne ?done / Mismatch, return 0
32: orb %al, %al
33: jne ?loop / Not done yet
34: incl %ecx / Matched, return 1
35:
36: ?done:
37: movl %eax, %ecx / Result to EAX
38:
39: pop %edi
40: pop %esi
41: ret
42:
43: / end of libc/string/i386/streq.s
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.