Rev 8793 | Details | Compare with Previous | Last modification | View Log | RSS feed
Rev | Author | Line No. | Line |
---|---|---|---|
9765 | turbocat | 1 | /* Copyright (C) 1994 DJ Delorie, see COPYING.DJ for details */ |
2 | #include |
||
3 | |||
4 | int strncmp(const char* s1, const char* s2, size_t n) |
||
5 | { |
||
6 | register int __res; |
||
7 | int d0, d1, d2; |
||
8 | __asm__ __volatile__( |
||
9 | "1:\tdecl %3\n\t" |
||
10 | "js 2f\n\t" |
||
11 | "lodsb\n\t" |
||
12 | "scasb\n\t" |
||
13 | "jne 3f\n\t" |
||
14 | "testb %%al,%%al\n\t" |
||
15 | "jne 1b\n" |
||
16 | "2:\txorl %%eax,%%eax\n\t" |
||
17 | "jmp 4f\n" |
||
18 | "3:\tsbbl %%eax,%%eax\n\t" |
||
19 | "orb $1,%%al\n" |
||
20 | "4:" |
||
21 | : "=a"(__res), "=&S"(d0), "=&D"(d1), "=&c"(d2) |
||
22 | : "1"(s1), "2"(s2), "3"(n)); |
||
23 | return __res; |
||
24 | } |