strncmp.S
上传用户:jlfgdled
上传日期:2013-04-10
资源大小:33168k
文件大小:1k
- /* $Id: strncmp.S,v 1.2 1996/09/09 02:47:20 davem Exp $
- * strncmp.S: Hand optimized Sparc assembly of GCC output from GNU libc
- * generic strncmp routine.
- */
- #include <asm/cprefix.h>
- .text
- .align 4
- .global C_LABEL(__strncmp), C_LABEL(strncmp)
- C_LABEL(__strncmp):
- C_LABEL(strncmp):
- mov %o0, %g3
- mov 0, %o3
- cmp %o2, 3
- ble 7f
- mov 0, %g2
- sra %o2, 2, %o4
- ldub [%g3], %o3
- 0:
- ldub [%o1], %g2
- add %g3, 1, %g3
- and %o3, 0xff, %o0
- cmp %o0, 0
- be 8f
- add %o1, 1, %o1
- cmp %o0, %g2
- be,a 1f
- ldub [%g3], %o3
- retl
- sub %o0, %g2, %o0
- 1:
- ldub [%o1], %g2
- add %g3,1, %g3
- and %o3, 0xff, %o0
- cmp %o0, 0
- be 8f
- add %o1, 1, %o1
- cmp %o0, %g2
- be,a 1f
- ldub [%g3], %o3
- retl
- sub %o0, %g2, %o0
- 1:
- ldub [%o1], %g2
- add %g3, 1, %g3
- and %o3, 0xff, %o0
- cmp %o0, 0
- be 8f
- add %o1, 1, %o1
- cmp %o0, %g2
- be,a 1f
- ldub [%g3], %o3
- retl
- sub %o0, %g2, %o0
- 1:
- ldub [%o1], %g2
- add %g3, 1, %g3
- and %o3, 0xff, %o0
- cmp %o0, 0
- be 8f
- add %o1, 1, %o1
- cmp %o0, %g2
- be 1f
- add %o4, -1, %o4
- retl
- sub %o0, %g2, %o0
- 1:
- cmp %o4, 0
- bg,a 0b
- ldub [%g3], %o3
- b 7f
- and %o2, 3, %o2
- 9:
- ldub [%o1], %g2
- add %g3, 1, %g3
- and %o3, 0xff, %o0
- cmp %o0, 0
- be 8f
- add %o1, 1, %o1
- cmp %o0, %g2
- be 7f
- add %o2, -1, %o2
- 8:
- retl
- sub %o0, %g2, %o0
- 7:
- cmp %o2, 0
- bg,a 9b
- ldub [%g3], %o3
- and %g2, 0xff, %o0
- retl
- sub %o3, %o0, %o0