|
|
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: //////////
14:
15: String .equ 8
16: Char .equ String+4
17:
18: .globl strchr
19:
20: strchr:
21: push %esi
22:
23: movl %esi, String(%esp) / String address to ESI
24: movb %ah, Char(%esp) / Char to AH
25: cld
26:
27: ?loop:
28: lodsb / Fetch String character to AL
29: cmpb %al, %ah / and compare to Char
30: je ?matched
31: orb %al, %al / Test for NUL
32: jne ?loop / Not done
33: subl %eax, %eax / End of String, return NULL
34: jmp ?done
35:
36: ?matched:
37: decl %esi / Back up to match
38: movl %eax, %esi / Return pointer in EAX
39:
40: ?done:
41: pop %esi
42: ret
43:
44: / 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.