|
|
1.1 ! root 1: ////////// ! 2: / libc/string/i386/memchr.s ! 3: / i386 C string library. ! 4: / ANSI 4.11.5.1. ! 5: ////////// ! 6: ! 7: ////////// ! 8: / void * ! 9: / memchr(void *String, int Char, size_t Count) ! 10: / ! 11: / Find Char in String, return pointer or NULL. ! 12: ////////// ! 13: ! 14: String .equ 8 ! 15: Char .equ String+4 ! 16: Count .equ Char+4 ! 17: ! 18: .globl memchr ! 19: ! 20: memchr: ! 21: push %edi ! 22: ! 23: movl %ecx, Count(%esp) / Count to ECX ! 24: jecxz ?nomatch / No match possible in 0 characters ! 25: movl %edi, String(%esp) / String to EDI ! 26: movb %al, Char(%esp) / Char to AL ! 27: cld ! 28: repne ! 29: scasb / Look for character ! 30: jnz ?nomatch / No match found ! 31: decl %edi / Back up to match (if any) ! 32: movl %eax, %edi / Return pointer in EAX ! 33: ! 34: ?done: ! 35: pop %edi ! 36: ret ! 37: ! 38: ?nomatch: ! 39: subl %eax, %eax / No match, return NULL ! 40: jmp ?done ! 41: ! 42: / end of libc/string/i386/memchr.s
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.