|
|
1.1 root 1: //////////
2: / libc/string/i386/strchr.s
3: / i386 C string library.
4: / ANSI 4.11.5.2.
5: //////////
6:
7: //////////
8: / char *
9: / strchr(char *String, int Char)
10: /
11: / Find Char in String, return pointer or NULL.
12: / Previously known as index();
13: / index() entry point retained for backward compatability.
14: //////////
15:
16: String .equ 8
17: Char .equ String+4
18:
19: .globl strchr
20: .globl index
21:
22: strchr:
23: index:
24: push %esi
25:
26: movl %esi, String(%esp) / String address to ESI
27: movb %ah, Char(%esp) / Char to AH
28: cld
29:
30: ?loop:
31: lodsb / Fetch String character to AL
32: cmpb %al, %ah / and compare to Char
33: je ?matched
34: orb %al, %al / Test for NUL
35: jne ?loop / Not done
36: subl %eax, %eax / End of String, return NULL
37: jmp ?done
38:
39: ?matched:
40: decl %esi / Back up to match
41: movl %eax, %esi / Return pointer in EAX
42:
43: ?done:
44: pop %esi
45: ret
46:
47: / end of libc/string/i386/strchr.s
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.